O cmdlet Set-AzKeyVaultAccessPolicy concede ou modifica permissões existentes para que um usuário, aplicativo ou grupo de segurança execute as operações especificadas com um cofre de chaves. Ele não modifica as permissões que outros usuários, aplicativos ou grupos de segurança têm no cofre de chaves.
Se você estiver definindo permissões para um grupo de segurança, essa operação afetará apenas os usuários desse grupo de segurança.
Os diretórios a seguir devem ser todos o mesmo diretório do Azure:
O diretório padrão da assinatura do Azure na qual o cofre de chaves reside.
O diretório do Azure que contém o usuário ou grupo de aplicativos para o qual você está concedendo permissões.
Exemplos de cenários em que essas condições não são atendidas e esse cmdlet não funcionará são:
Autorizar um usuário de uma organização diferente a gerenciar seu cofre de chaves.
Cada organização tem seu próprio diretório.
Sua conta do Azure tem vários diretórios.
Se você registrar um aplicativo em um diretório diferente do diretório padrão, não poderá autorizar esse aplicativo a usar seu cofre de chaves.
O aplicativo deve estar no diretório padrão.
Observe que, embora a especificação do grupo de recursos seja opcional para esse cmdlet, você deve fazê-lo para obter um melhor desempenho.
O cmdlet pode chamar abaixo a API do Microsoft Graph de acordo com os parâmetros de entrada:
GET /directoryObjects/{id}
GET /users/{id}
GET /users
GET /servicePrincipals/{id}
GET /servicePrincipals
GET /groups/{id}
Observação
Ao usar uma entidade de serviço para conceder permissões de política de acesso, você deve usar o -BypassObjectIdValidation parâmetro.
Exemplos
Exemplo 1: Conceder permissões a um usuário para um cofre de chaves e modificar as permissões
Set-AzKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -UserPrincipalName 'PattiFuller@contoso.com' -PermissionsToKeys create,import,delete,list -PermissionsToSecrets set,delete -PassThru
Vault Name : Contoso03Vault
Resource Group Name : myrg
Location : westus
Resource ID : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourceGroups/myrg/providers
/Microsoft.KeyVault/vaults/contoso03vault
Vault URI : https://contoso03vault.vault.azure.net/
Tenant ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
SKU : Standard
Enabled For Deployment? : True
Enabled For Template Deployment? : False
Enabled For Disk Encryption? : False
Soft Delete Enabled? : True
Access Policies :
Tenant ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Object ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Application ID :
Display Name : User Name (username@microsoft.com)
Permissions to Keys : create, import, delete, list
Permissions to Secrets : set, delete
Permissions to Certificates :
Permissions to (Key Vault Managed) Storage :
Tags :
Set-AzKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -UserPrincipalName 'PattiFuller@contoso.com' -PermissionsToSecrets set,delete,get -PassThru
Vault Name : Contoso03Vault
Resource Group Name : myrg
Location : westus
Resource ID : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourceGroups/myrg/providers
/Microsoft.KeyVault/vaults/contoso03vault
Vault URI : https://contoso03vault.vault.azure.net/
Tenant ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
SKU : Standard
Enabled For Deployment? : True
Enabled For Template Deployment? : False
Enabled For Disk Encryption? : False
Soft Delete Enabled? : True
Access Policies :
Tenant ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Object ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Application ID :
Display Name : User Name (username@microsoft.com)
Permissions to Keys : create, import, delete, list
Permissions to Secrets : set, delete, get
Permissions to Certificates :
Permissions to (Key Vault Managed) Storage :
Tags :
Set-AzKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -UserPrincipalName 'PattiFuller@contoso.com' -PermissionsToKeys @() -PassThru
Vault Name : Contoso03Vault
Resource Group Name : myrg
Location : westus
Resource ID : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourceGroups/myrg/providers
/Microsoft.KeyVault/vaults/contoso03vault
Vault URI : https://contoso03vault.vault.azure.net/
Tenant ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
SKU : Standard
Enabled For Deployment? : True
Enabled For Template Deployment? : False
Enabled For Disk Encryption? : False
Soft Delete Enabled? : True
Access Policies :
Tenant ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Object ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Application ID :
Display Name : User Name (username@microsoft.com)
Permissions to Keys :
Permissions to Secrets : set, delete, get
Permissions to Certificates :
Permissions to (Key Vault Managed) Storage :
Tags :
O primeiro comando concede permissões para um usuário em sua ID do Microsoft Entra, PattiFuller@contoso.com, para executar operações em chaves e segredos com um cofre de chaves chamado Contoso03Vault. O parâmetro PassThru resulta no objeto atualizado sendo retornado pelo cmdlet.
O segundo comando modifica as permissões que foram concedidas no PattiFuller@contoso.com primeiro comando, para agora permitir obter segredos, além de configurá-los e excluí-los. As permissões para operações de chave permanecem inalteradas após este comando.
O comando final modifica ainda mais as permissões existentes para PattiFuller@contoso.com remover todas as permissões para operações de chave. As permissões para operações secretas permanecem inalteradas após este comando.
Exemplo 2: Conceder permissões para uma entidade de serviço de aplicativo ler e gravar segredos
Este comando concede permissões para um aplicativo para um cofre de chaves chamado Contoso03Vault.
O parâmetro ServicePrincipalName especifica o aplicativo. A aplicação tem de estar registada no seu Microsoft Entra ID. O valor do parâmetro ServicePrincipalName deve ser o nome da entidade de serviço do aplicativo ou o GUID da ID do aplicativo.
Este exemplo especifica o nome http://payroll.contoso.comda entidade de serviço e o comando concede ao aplicativo permissões para ler e gravar segredos.
Exemplo 3: Conceder permissões para um aplicativo usando sua ID de objeto
Este comando concede ao aplicativo permissões para ler e gravar segredos.
Este exemplo especifica o aplicativo usando a ID do objeto da entidade de serviço do aplicativo.
Exemplo 4: Conceder permissões para um nome principal de usuário
Este comando concede as permissões para segredos a serem recuperados do cofre de chaves Contoso03Vault pelo provedor de recursos Microsoft.Compute.
Exemplo 6: Conceder permissões a um grupo de segurança
Get-AzADGroup
Set-AzKeyVaultAccessPolicy -VaultName 'myownvault' -ObjectId (Get-AzADGroup -SearchString 'group2')[0].Id -PermissionsToKeys get, set -PermissionsToSecrets get, set
O primeiro comando usa o cmdlet Get-AzADGroup para obter todos os grupos do Ative Directory. Na saída, você vê 3 grupos retornados, chamados group1, group2 e group3. Vários grupos podem ter o mesmo nome, mas sempre têm um ObjectId exclusivo. Quando mais de um grupo com o mesmo nome for retornado, use o ObjectId na saída para identificar o que você deseja usar.
Em seguida, use a saída deste comando com Set-AzKeyVaultAccessPolicy para conceder permissões ao group2 para seu cofre de chaves, chamado myownvault. Este exemplo enumera os grupos chamados 'group2' embutidos na mesma linha de comando.
Pode haver vários grupos na lista retornada que são chamados 'group2'.
Este exemplo escolhe o primeiro, indicado pelo índice [0] na lista retornada.
Exemplo 7: Conceder acesso à Proteção de Informações do Azure à chave de locatário gerenciada pelo cliente (BYOK)
Este comando autoriza a Proteção de Informações do Azure a usar uma chave gerenciada pelo cliente (o cenário traga sua própria chave ou "BYOK") como a chave de locatário da Proteção de Informações do Azure.
Ao executar esse comando, especifique seu próprio nome do cofre de chaves, mas especifique o parâmetro ServicePrincipalName e especifique as permissões no exemplo.
Permite especificar uma ID de objeto sem validar que o objeto existe na ID do Microsoft Entra.
Use esse parâmetro somente se quiser conceder acesso ao seu cofre de chaves a uma ID de objeto que se refira a um grupo de segurança delegado de outro locatário do Azure.
Especifica o endereço de e-mail do usuário a quem conceder permissões.
Esse endereço de e-mail deve existir no diretório associado à assinatura atual e ser exclusivo.
Permite que o provedor de recursos Microsoft.Compute recupere segredos desse cofre de chaves quando esse cofre de chaves é referenciado na criação de recursos, por exemplo, ao criar uma máquina virtual.
Especifica a ID do objeto do usuário ou entidade de serviço na ID do Microsoft Entra para a qual conceder permissões. Seu valor está no formato de GUID.
Especifica uma matriz de permissões de certificado a serem concedidas a um usuário ou entidade de serviço.
'Todos' concederá todas as permissões, exceto 'Limpar' Os valores aceitáveis para este parâmetro:
Especifica uma matriz de permissões de operação de chave a serem concedidas a um usuário ou entidade de serviço.
'Todos' concederá todas as permissões, exceto 'Limpar' Os valores aceitáveis para este parâmetro:
Especifica uma matriz de permissões de operação secreta a serem concedidas a um usuário ou entidade de serviço.
'Todos' concederá todas as permissões, exceto 'Limpar' Os valores aceitáveis para este parâmetro:
Especifica a conta de armazenamento gerenciado e as permissões de operação de definição de SaS a serem concedidas a um usuário ou entidade de serviço.
'Todos' concederá todas as permissões, exceto 'Limpar' Os valores aceitáveis para este parâmetro:
Especifica o nome da entidade de serviço do aplicativo ao qual conceder permissões.
Especifique a ID do aplicativo, também conhecida como ID do cliente, registrada para o aplicativo no Microsoft Entra ID. O aplicativo com o nome da entidade de serviço especificado por esse parâmetro deve ser registrado no diretório do Azure que contém sua assinatura atual.
O ID da assinatura.
Por padrão, os cmdlets são executados na assinatura definida no contexto atual. Se o usuário especificar outra assinatura, o cmdlet atual será executado na assinatura especificada pelo usuário.
A substituição de assinaturas só entra em vigor durante o ciclo de vida do cmdlet atual. Ele não altera a assinatura no contexto e não afeta cmdlets subsequentes.
Especifica o nome principal do usuário a quem conceder permissões.
Esse nome principal de usuário deve existir no diretório associado à assinatura atual.
Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.
A origem deste conteúdo pode ser encontrada no GitHub, onde também pode criar e rever problemas e pedidos Pull. Para mais informações, consulte o nosso guia do contribuidor.