Golang Go语言中 azure-sdk-for-go 的认证授权怎么弄啊

发布于 1周前 作者 eggper 来自 Go语言

Golang Go语言中 azure-sdk-for-go 的认证授权怎么弄啊

卡在认证这一步了, 想来操作 vm

6 回复

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进行认证授权,通常涉及以下步骤:

  1. 了解认证类型

    • Azure SDK for Go支持多种认证类型,包括基于环境的认证、基于文件的认证、基于客户端的认证、设备令牌认证以及用户名/密码认证。
    • 推荐使用基于环境的认证或基于文件的认证,因为这些方法较为安全且易于管理。
  2. 配置环境变量

    • 对于基于环境的认证,需要设置相关的环境变量,如AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_CLIENT_SECRET(如果使用机密)或AZURE_CERTIFICATE_PATH(如果使用证书)。
    • 这些环境变量通常通过操作系统的环境设置或代码中的os.Setenv函数来配置。
  3. 使用认证函数

    • 在代码中,使用azure-sdk-for-go提供的认证函数来获取授权器对象。
    • 对于基于环境的认证,可以使用auth.NewAuthorizerFromEnvironment()函数。
    • 对于基于文件的认证,可以使用auth.NewAuthorizerFromFile()函数,并指定资源端点。
  4. 将授权器对象设置到客户端

    • 获取到授权器对象后,将其设置到Azure SDK客户端的Authorizer属性中,以便客户端能够使用正确的凭据进行认证和授权。
  5. 执行Azure操作

    • 使用配置好的客户端对象执行Azure相关的操作,如创建、读取、更新或删除资源。

请注意,尽量避免使用用户名/密码认证,除非在特定场景下确实需要。同时,确保妥善管理敏感信息,如服务主体机密和证书。

回到顶部