Golang Go语言中 azure-sdk-for-go 的认证授权怎么弄啊
Golang Go语言中 azure-sdk-for-go 的认证授权怎么弄啊
卡在认证这一步了, 想来操作 vm
go 的没用过,.net 的需要在 azure 上新建一个 AD 应用 然后通过这个应用的名称 /租户名称 /密码这些东西来权限认证,看了下 go 的 sample 也很像:
更多关于Golang Go语言中 azure-sdk-for-go 的认证授权怎么弄啊的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
https://github.com/Azure-Samples/azure-sdk-for-go-samples:
To use service principal authentication, create a principal by running az ad sp create-for-rbac -n “<yourAppName>” and set the following environment variables. You can copy .env.tpl to a .env file in each package for ease of use.
export AZURE_SUBSCRIPTION_ID=
export AZURE_TENANT_ID=
export AZURE_CLIENT_ID=
export AZURE_CLIENT_SECRET=
export AZURE_LOCATION_DEFAULT=westus2
export AZURE_BASE_GROUP_NAME=azure-samples-go
export AZURE_KEEP_SAMPLE_RESOURCES=0
我看过这个, 但是他把认证函数都封装在内部了, 我想把它抽出来, 能力不够被绕晕了, 我用过 python 的认证比 go 的好很多
嗯 需要提供一个 Service principal 就行
在Golang中使用azure-sdk-for-go进行认证授权,通常涉及以下步骤:
-
了解认证类型:
- Azure SDK for Go支持多种认证类型,包括基于环境的认证、基于文件的认证、基于客户端的认证、设备令牌认证以及用户名/密码认证。
- 推荐使用基于环境的认证或基于文件的认证,因为这些方法较为安全且易于管理。
-
配置环境变量:
- 对于基于环境的认证,需要设置相关的环境变量,如AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_CLIENT_SECRET(如果使用机密)或AZURE_CERTIFICATE_PATH(如果使用证书)。
- 这些环境变量通常通过操作系统的环境设置或代码中的os.Setenv函数来配置。
-
使用认证函数:
- 在代码中,使用azure-sdk-for-go提供的认证函数来获取授权器对象。
- 对于基于环境的认证,可以使用
auth.NewAuthorizerFromEnvironment()
函数。 - 对于基于文件的认证,可以使用
auth.NewAuthorizerFromFile()
函数,并指定资源端点。
-
将授权器对象设置到客户端:
- 获取到授权器对象后,将其设置到Azure SDK客户端的Authorizer属性中,以便客户端能够使用正确的凭据进行认证和授权。
-
执行Azure操作:
- 使用配置好的客户端对象执行Azure相关的操作,如创建、读取、更新或删除资源。
请注意,尽量避免使用用户名/密码认证,除非在特定场景下确实需要。同时,确保妥善管理敏感信息,如服务主体机密和证书。