将 Azure 应用服务连接到 keyvault 支持的应用配置引发 403
Connecting an Azure App Service to a keyvault backed app configuration raises 403
我想知道如何将我的应用服务正确连接到也通过 KeyVault 支持的应用配置。
遗憾的是我没有真正找到一个非常合适的教程,所以现在我有点困惑,但没有用。
这是我的错误:
Unhandled exception. Microsoft.Extensions.Configuration.AzureAppConfiguration.KeyVaultReferenceException: Key vault error. ErrorCode:, Key:copied out, Label:, Etag:copied out, SecretIdentifier:https://copied out.vault.azure.net/secrets/copied out
2021-03-21T00:07:43.756601504Z ---> Azure.RequestFailedException: Service request failed.
2021-03-21T00:07:43.756608304Z Status: 403 (Forbidden)
2021-03-21T00:07:43.756614804Z Content:
2021-03-21T00:07:43.756614804Z {"error":{"code":"Forbidden","message":"The user, group or application 'appid=copied out;oid=copied out;iss=https://sts.windows.net/copied out/' does not have secrets get permission on key vault 'moonwatch;location=eastus'. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125287","innererror":{"code":"AccessDenied"}}}
(请注意,我已复制出敏感数据
我对这件事有点生气。这是我的设置:
ConfigBuilder.AddAzureAppConfiguration(options =>
{
var credentials = new ManagedIdentityCredential();
options.Connect(new Uri("https://copied out.azconfig.io"), credentials)
.ConfigureKeyVault(kv => kv.SetCredential(credentials));
});
这是我目前配置资源的方式:
- 我的应用服务有一个托管的、系统分配的标识
- 应用配置包含我的所有配置,加上一些由 keyvault 支持的配置条目
- keyvault 被设置为“Vault access”作为访问策略,并根据设置程序正确连接到应用程序配置
- 我的应用服务应用程序在我的应用配置中分配了角色“应用配置数据 Reader”。
我现在不完全确定我现在的这个设置哪里出了问题。我现在已经尝试了几种方法,切换到 RBAC,到处更改设置,但似乎还没有成功。 RBAC 将错误更改为:
2021-03-21T00:07:43.756618504Z {"error":{"code":"Forbidden","message":"Caller is not authorized to perform action on resource.\r\nIf role assignments, deny assignments or role definitions were changed recently, please observe propagation time.\r\nCaller: appid=copied out;oid=copied out;iss=copied out/\r\nAction: 'Microsoft.KeyVault/vaults/secrets/getSecret/action'\r\nResource: '/subscriptions/copied out/resourcegroups/moonwatch/providers/microsoft.keyvault/vaults/copied out/secrets/copied out'\r\nAssignment: (not found)\r\nVault: copied out;location=eastus\r\n","innererror":{"code":"ForbiddenByRbac"}}}
我哪里错了?我是否也需要以某种方式将我的应用程序本身连接到 keyvault?这看起来对我来说是一个传递性的东西
错误发生是因为您的应用服务没有权限访问您的 Key Vault。 Azure 应用程序配置不会访问您的 Key Vault。您的应用程序可以。在您的 Key Vault 的访问策略中,请向您的应用服务的托管标识授予 'Get' 秘密权限。
我想知道如何将我的应用服务正确连接到也通过 KeyVault 支持的应用配置。
遗憾的是我没有真正找到一个非常合适的教程,所以现在我有点困惑,但没有用。
这是我的错误:
Unhandled exception. Microsoft.Extensions.Configuration.AzureAppConfiguration.KeyVaultReferenceException: Key vault error. ErrorCode:, Key:copied out, Label:, Etag:copied out, SecretIdentifier:https://copied out.vault.azure.net/secrets/copied out
2021-03-21T00:07:43.756601504Z ---> Azure.RequestFailedException: Service request failed.
2021-03-21T00:07:43.756608304Z Status: 403 (Forbidden)
2021-03-21T00:07:43.756614804Z Content:
2021-03-21T00:07:43.756614804Z {"error":{"code":"Forbidden","message":"The user, group or application 'appid=copied out;oid=copied out;iss=https://sts.windows.net/copied out/' does not have secrets get permission on key vault 'moonwatch;location=eastus'. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125287","innererror":{"code":"AccessDenied"}}}
(请注意,我已复制出敏感数据
我对这件事有点生气。这是我的设置:
ConfigBuilder.AddAzureAppConfiguration(options =>
{
var credentials = new ManagedIdentityCredential();
options.Connect(new Uri("https://copied out.azconfig.io"), credentials)
.ConfigureKeyVault(kv => kv.SetCredential(credentials));
});
这是我目前配置资源的方式:
- 我的应用服务有一个托管的、系统分配的标识
- 应用配置包含我的所有配置,加上一些由 keyvault 支持的配置条目
- keyvault 被设置为“Vault access”作为访问策略,并根据设置程序正确连接到应用程序配置
- 我的应用服务应用程序在我的应用配置中分配了角色“应用配置数据 Reader”。
我现在不完全确定我现在的这个设置哪里出了问题。我现在已经尝试了几种方法,切换到 RBAC,到处更改设置,但似乎还没有成功。 RBAC 将错误更改为:
2021-03-21T00:07:43.756618504Z {"error":{"code":"Forbidden","message":"Caller is not authorized to perform action on resource.\r\nIf role assignments, deny assignments or role definitions were changed recently, please observe propagation time.\r\nCaller: appid=copied out;oid=copied out;iss=copied out/\r\nAction: 'Microsoft.KeyVault/vaults/secrets/getSecret/action'\r\nResource: '/subscriptions/copied out/resourcegroups/moonwatch/providers/microsoft.keyvault/vaults/copied out/secrets/copied out'\r\nAssignment: (not found)\r\nVault: copied out;location=eastus\r\n","innererror":{"code":"ForbiddenByRbac"}}}
我哪里错了?我是否也需要以某种方式将我的应用程序本身连接到 keyvault?这看起来对我来说是一个传递性的东西
错误发生是因为您的应用服务没有权限访问您的 Key Vault。 Azure 应用程序配置不会访问您的 Key Vault。您的应用程序可以。在您的 Key Vault 的访问策略中,请向您的应用服务的托管标识授予 'Get' 秘密权限。