Как получить идентификатор объекта службы приложений для политики доступа к хранилищу ключей Azurerm? - PullRequest
0 голосов
/ 15 января 2019

Используя Terraform, я пытаюсь добавить политику доступа keyvault к приложению (которое также создается в Terraform), для которого требуется object_it (которое является GUID) этого приложения. В ARM шаблоне это выглядит так:

 "objectId": "[reference(variables('myAppResourceId'), '2015-08-31-PREVIEW').principalId]"

, поэтому Terraform требуется основной идентификатор , который будет присвоен object_id . Если я использую значение "object_id = $ {azurerm_app_service.myApp.id}" примерно так:

  resource "azurerm_key_vault_access_policy" "pol1" {
  vault_name          = "${azurerm_key_vault.kv1.name}"
  resource_group_name = "${azurerm_key_vault.kv1.resource_group_name}"

  tenant_id = "${data.azurerm_subscription.current.subscription_id}"
  object_id = "${azurerm_app_service.myApp.id}"

  key_permissions = "${var.app_keys_permissions}"
  secret_permissions = "${var.app_secrets_permissions}"
} 

затем, когда я запускаю команду apply, я получаю следующую ошибку:

azurerm_key_vault_access_policy.pol1: "object_id" is an invalid UUUID: encoding/hex: invalid byte: U+002F '/'

это, вероятно, идентификатор, который выглядит как URL с косой чертой, так что это не работает, так как мне нужен только GUID.


Я попробовал также предложение от приложения Azure с функцией Terraform grant с доступом к msi к azure keyvault , используя object_id = "$ {lookup (azurerm_app_service.app1.identity [0]," Principal_id " ")}" для службы приложений вместо функции, и я получаю сообщение об ошибке:

 azurerm_key_vault_access_policy.appPolicy1: At column 43, line 1: list "azurerm_app_service.app1.identity" does not have any elements so cannot determine type. in:

${lookup(azurerm_app_service.app1.identity[0],"principal_id")}

Может кто-нибудь помочь мне с этим object_id, пожалуйста?

спасибо

1 Ответ

0 голосов
/ 15 января 2019

Когда вы читаете описание свойства azurerm_key_vault_access_policy object_id , вы должны знать, что это может означать идентификатор участника веб-приложения.

И azurerm_app_service.myApp.id , который вы указали, не является основным идентификатором, это идентификатор ресурса службы приложения. Вы должны поместить azurerm_app_service.myApp.identity.principal_id, связанный с вашим веб-приложением. Взгляните на атрибуты ресурса службы приложений . Надеюсь, это поможет вам.

Однако что-то, не упомянутое в документации, - это необходимость указать блок идентификации в объявлении app_service.

identity { type = "SystemAssigned" }

Если вы не укажете его, вы можете получить пустой список в качестве атрибута идентичности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...