Azure RelayManagementClient 的 ManagedIdentityCredential
ManagedIdentityCredential for Azure RelayManagementClient
对于 Azure Key Vault,我使用 DefaultAzureCredential。这在本地开发和使用应用标识发布到 Azure 时效果很好。我不需要在应用程序中存储任何 ID 或机密。
我还需要利用 RelayManagementClient 来管理来自应用程序的 (CRUD) 混合连接。我无法使用 Microsoft.Azure.Management.Relay 包找到类似的授权方法。此客户端的构造函数接受一个 ServiceClientCredentials 实例,其中有三个派生 类; BasicAuthenticationCredentials、CertificateCredentials 和 TokenCredentials - none 其中适合。
我通过调用
创建了一个 ServiceClientCredentials 的实例
SdkContext.AzureCredentialsFactory
.FromServicePrincipal(config.ClientId,
config.ClientSecret,
config.TenantId,
AzureEnvironment.AzureGlobalCloud);
但通过这种方式,我在配置中公开了 azure 租户的详细信息。最初这不是什么大问题,因为配置是安全的,但我想知道是否可以为此客户端使用 ManagedIdentityCredentials?
我可以将这些值存储在使用托管身份凭证的 KeyVault 中,但也许之前有人这样做过。
编辑:
这是将 AzureCredentials 添加到 DI 容器的代码。
services.AddSingleton(SdkContext.AzureCredentialsFactory.FromSystemAssignedManagedServiceIdentity(MSIResourceType.AppService, AzureEnvironment.AzureGlobalCloud));
是的,您可以使用托管身份进行身份验证,只需在创建 ServiceClientCredentials 实例时使用 FromSystemAssignedManagedServiceIdentity
or FromUserAssigedManagedServiceIdentity
而不是 FromServicePrincipal
。第一个用于系统分配的托管标识,第二个用于用户分配的托管标识。
对于 Azure Key Vault,我使用 DefaultAzureCredential。这在本地开发和使用应用标识发布到 Azure 时效果很好。我不需要在应用程序中存储任何 ID 或机密。
我还需要利用 RelayManagementClient 来管理来自应用程序的 (CRUD) 混合连接。我无法使用 Microsoft.Azure.Management.Relay 包找到类似的授权方法。此客户端的构造函数接受一个 ServiceClientCredentials 实例,其中有三个派生 类; BasicAuthenticationCredentials、CertificateCredentials 和 TokenCredentials - none 其中适合。
我通过调用
创建了一个 ServiceClientCredentials 的实例SdkContext.AzureCredentialsFactory
.FromServicePrincipal(config.ClientId,
config.ClientSecret,
config.TenantId,
AzureEnvironment.AzureGlobalCloud);
但通过这种方式,我在配置中公开了 azure 租户的详细信息。最初这不是什么大问题,因为配置是安全的,但我想知道是否可以为此客户端使用 ManagedIdentityCredentials?
我可以将这些值存储在使用托管身份凭证的 KeyVault 中,但也许之前有人这样做过。
编辑: 这是将 AzureCredentials 添加到 DI 容器的代码。
services.AddSingleton(SdkContext.AzureCredentialsFactory.FromSystemAssignedManagedServiceIdentity(MSIResourceType.AppService, AzureEnvironment.AzureGlobalCloud));
是的,您可以使用托管身份进行身份验证,只需在创建 ServiceClientCredentials 实例时使用 FromSystemAssignedManagedServiceIdentity
or FromUserAssigedManagedServiceIdentity
而不是 FromServicePrincipal
。第一个用于系统分配的托管标识,第二个用于用户分配的托管标识。