Azure SDK 使用 CLI Creds 或 Managed Identity
Azure SDK use CLI Creds or Managed Identity
使用 AWS 时,如果您使用 aws configure
登录,则可以使用 AWS SDK,而无需从本地计算机以任何编程语言公开凭据。如果稍后 运行ning 在 aws 中(Lambda、EC2 等),完全相同的代码会在没有任何配置的情况下使用分配给资源的 IAM 角色。
我尝试使用 Azure 进行同样的操作,我认为 Azure.Identity.DefaultAzureCredential
确实可以做到这一点。但是我什至无法在本地 运行 我的代码:
var blobServiceClient = new BlobServiceClient(storageUri, new DefaultAzureCredential());
var containerClient = await blobServiceClient.CreateBlobContainerAsync("test-container");
如果 运行在 AppService 中,如何获得使用本地计算机上的 CLI 凭据进行身份验证的 BlobServiceClient 和托管身份。
在您的方案中,如您所用,DefaultAzureCredential
是与 BlobServiceClient
一起的最佳选择,但它不使用 CLI 凭据进行身份验证。
要使其正常工作,只需将服务主体的 Environment variables
设置为 AZURE_CLIENT_ID
、AZURE_TENANT_ID
、AZURE_CLIENT_SECRET
。在 Azure 中,它使用 MSI 进行身份验证。
如果要使用CLI凭据进行身份验证,有AzureServiceTokenProvider
,它也可以访问Azure存储,但不能与BlobServiceClient
一起使用,您需要获得访问权限带有资源 https://storage.azure.com
、
的令牌
var azureServiceTokenProvider2 = new AzureServiceTokenProvider();
string accessToken = await azureServiceTokenProvider2.GetAccessTokenAsync("https://storage.azure.com").ConfigureAwait(false);
然后使用access token调用Storge REST API,我觉得第一种比较方便,用哪个,看你自己了。
使用 AWS 时,如果您使用 aws configure
登录,则可以使用 AWS SDK,而无需从本地计算机以任何编程语言公开凭据。如果稍后 运行ning 在 aws 中(Lambda、EC2 等),完全相同的代码会在没有任何配置的情况下使用分配给资源的 IAM 角色。
我尝试使用 Azure 进行同样的操作,我认为 Azure.Identity.DefaultAzureCredential
确实可以做到这一点。但是我什至无法在本地 运行 我的代码:
var blobServiceClient = new BlobServiceClient(storageUri, new DefaultAzureCredential());
var containerClient = await blobServiceClient.CreateBlobContainerAsync("test-container");
如果 运行在 AppService 中,如何获得使用本地计算机上的 CLI 凭据进行身份验证的 BlobServiceClient 和托管身份。
在您的方案中,如您所用,DefaultAzureCredential
是与 BlobServiceClient
一起的最佳选择,但它不使用 CLI 凭据进行身份验证。
要使其正常工作,只需将服务主体的 Environment variables
设置为 AZURE_CLIENT_ID
、AZURE_TENANT_ID
、AZURE_CLIENT_SECRET
。在 Azure 中,它使用 MSI 进行身份验证。
如果要使用CLI凭据进行身份验证,有AzureServiceTokenProvider
,它也可以访问Azure存储,但不能与BlobServiceClient
一起使用,您需要获得访问权限带有资源 https://storage.azure.com
、
var azureServiceTokenProvider2 = new AzureServiceTokenProvider();
string accessToken = await azureServiceTokenProvider2.GetAccessTokenAsync("https://storage.azure.com").ConfigureAwait(false);
然后使用access token调用Storge REST API,我觉得第一种比较方便,用哪个,看你自己了。