Quero provisionar um cofre de chaves do Azure do terraform por meio do prompt interativo do powershell. Quero fazer login no azure ( az login
) com o navegador da web. Eu quero que o ID do objeto dos usuários defina uma política de acesso personalizada limitada para ele. Meu snippet de terraform para o cofre de chaves se parece com isso:
resource "azurerm_key_vault" "always_encrypted_sample" {
# . . . . SNIP . . . .
access_policy {
tenant_id = "${data.azurerm_client_config.current.tenant_id}"
object_id = "${var.certificate_creator}"
certificate_permissions = [
"create", "get" # Terraform needs get to make the cert, probably to check its existance
]
}
}
resource "azurerm_key_vault_certificate" "column_certificate" {
# . . . . SNIP . . . .
}
Eu não sei como obter o id do objeto. az account show
só me dá o seguinte:
{
"environmentName": "AzureCloud",
"id": "XXXXXXXXXXXX",
"isDefault": true,
"name": "Pay-As-You-Go",
"state": "Enabled",
"tenantId": "XXXXXXX",
"user": {
"name": "[email protected]",
"type": "user"
}
}
Abri uma solicitação de recurso para o usuário conter uma propriedade id. Estou procurando uma solução alternativa. Existe um comando no azure cli para obter o ID de objeto dos meus usuários ou até mesmo upn para que eu possa consultar o ID do objeto a partir disso? Esse id de objeto está exposto pelo terraform em algum lugar? Não está em azurerm_client_config
.
Existe uma maneira de fazer isso usando a CLI do Azure. Aqui está uma demonstração:
scripts/getuser.ps1:
main.ts:
Tenha em mente que
az ad signed-in-user
é relativamente novo, portanto, verifique se tudo está atualizado.Recursos:
https://docs.microsoft.com/en-us/cli/azure/ad/signed-in-user?view=azure-cli-latest https://www.terraform.io/docs/providers/external/data_source .html