惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CXSECURITY Database RSS Feed - CXSecurity.com
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
Recent Announcements
Recent Announcements
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
A
About on SuperTechFans
G
Google Developers Blog
MyScale Blog
MyScale Blog
N
Netflix TechBlog - Medium
博客园 - 叶小钗
Know Your Adversary
Know Your Adversary
V
Vulnerabilities – Threatpost
D
DataBreaches.Net
P
Palo Alto Networks Blog
C
Cisco Blogs
H
Hackread – Cybersecurity News, Data Breaches, AI and More
NISL@THU
NISL@THU
Forbes - Security
Forbes - Security
Microsoft Security Blog
Microsoft Security Blog
T
The Exploit Database - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
腾讯CDC
Schneier on Security
Schneier on Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
N
News and Events Feed by Topic
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Engineering at Meta
Engineering at Meta
Last Week in AI
Last Week in AI
AWS News Blog
AWS News Blog
Security Latest
Security Latest
H
Heimdal Security Blog
小众软件
小众软件
Cyberwarzone
Cyberwarzone
The Hacker News
The Hacker News
P
Privacy International News Feed
Stack Overflow Blog
Stack Overflow Blog
The Cloudflare Blog
Scott Helme
Scott Helme
博客园 - 【当耐特】
Latest news
Latest news
Microsoft Azure Blog
Microsoft Azure Blog
Y
Y Combinator Blog
Jina AI
Jina AI
Spread Privacy
Spread Privacy
量子位
博客园_首页
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Blog — PlanetScale
Blog — PlanetScale
雷峰网
雷峰网

博客园 - 衡子

Ubuntu24.04更改SSH端口 记录安装过程 Azure CLI创建管理员用户 创建VMSS中的instance 创建不带公网IP的VM Azure LSv3系列VM 自动挂载NVMe本地磁盘 Azure AD访问Azure Storage Azure Linux VM使用Managed Identity获取Key-vault的Secret Azure AD SSO with Google Cloud Identity 通过VM SWAP OS DISK升级VM Azure Front Door添加自定义域名 VM间网络PPS和带宽测试 Azure获取access token的方法 VM间记录时延 Windows Terminal的一些配置 安装hping Azure解除不再使用Directory的关联 使用VSCode Remote Containers功能实现开发环境统一 Azure AKS容器网络详解
通过API获取Azure KeyVault Securet
衡子 · 2022-02-17 · via 博客园 - 衡子

在之前的文章中介绍了如何获取Azure的Access Token。本文将介绍,如何用获取的Access Token访问Azure的KeyVault的Secret。

一 创建Service Principal

通过Azure CLI创建全局Reader的用户,其中secret是创建SP时反显的PASSWORD,这个值只出现一次,创建完成后就不可见了:

name="whuser01"

sub_id=$(az account list --query "[?isDefault]" | jq -r .[].id)
az ad sp create-for-rbac -n $name --role reader --scopes /subscriptions/$sub_id

client_id=$(az ad sp list --display-name $name | jq -r .[].appId)
tenant_id=$(az ad sp list --display-name $name | jq -r .[].appOwnerOrganizationId)
obj_id=$(az ad sp list --display-name $name | jq -r .[].id)

secret="xxxx"

二 创建Azure KeyVault

1 创建Azure KeyVault

通过Azure Cli创建KeyVault服务

kvname="vhvk01"
rg="kv"
az_user=$(az account show -n dn-china-ats-weiheng | jq -r .user.name)
az_user_id=$(az ad user list --upn $az_user | jq -r .[].objectId)

az group create -n $rg -l eastasia

az keyvault create -n $kvname -g $rg -l eastasia --no-self-perms --enable-soft-delete false

2 设置用户权限

通过Azure CLI设置用户权限。这里采用的是Vault access policy的方式,当然也可以在创建KeyVault时,采用RBAC的方式。

az keyvault set-policy -n $kvname -g $rg --secret-permissions all --object-id $obj_id
az keyvault set-policy -n $kvname -g $rg --secret-permissions all --object-id $az_user_id

3 创建secret

az keyvault secret set -n $s_name --vault-name $kvname --value $s_value
s_id=$(az keyvault secret show -n test --vault-name $kvname | jq -r .id)

三 获取service principal的Access Token

1通过REST API获取Access Token

Access Token是通过call Azure的API实现的,这里需要注意的是,resource由于是keyvault,所以resource的参数需要定义成https://vault.azure.net

具体curl的命令如下:

curl -X POST -s \
  -d "grant_type=client_credentials" \
  -d "client_id=$client_id" \
  -d "client_secret=$secret" \
  -d "resource=https://vault.azure.net" \
  https://login.microsoftonline.com/$tenant_id/oauth2/token | jq -r .access_token > /tmp/token.txt
token=$(cat /tmp/token.txt)

2通过Azure CLI获取Token

当然可以通过Azure CLI获取Token,具体命令如下:

token=$(az account get-access-token --resource https://vault.azure.net | jq -r .accessToken)

四 用Access Token调用Azure KeyVault

在做好这些准备工作后,我们通过HTTP的REST API Call去获取KeyVault的secret内容。具体如下:

curl -s -X GET -H "Authorization: Bearer $token" $s_id?api-version=7.2 | jq -r .value

五 总结

本文通过如何获取Access Token,并通过对service principal的授权,实现通过Access Token对Azure KeyVault进行访问。