Azure ACR - как назначить принцип обслуживания через терраформ? - PullRequest
0 голосов
/ 14 декабря 2018

Попытка назначить участника службы реестру контейнера Azure безрезультатно.В Azure docs указывается следующее ...

Вы можете назначить субъект-службу для своего реестра, а ваше приложение или служба может использовать его для аутентификации без участия пользователя

Я хочу сделать это с помощью terraform, но я не вижу какой-либо опции принципала службы в Поставщике Azure azurerm_container_registry Документы (управляемые) ...

resource "azurerm_resource_group" "rg" {
  name     = "resourceGroup1"
  location = "West US"
}

resource "azurerm_container_registry" "acr" {
  name                   = "containerRegistry1"
  resource_group_name    = "${azurerm_resource_group.rg.name}"
  location               = "${azurerm_resource_group.rg.location}"
  sku                    = "Premium"
  admin_enabled          = false
  georeplication_locations = ["East US", "West Europe"]
}

Я надеялся найти service_principal строфу, такую ​​как то, что доступно в azurerm_kubernetes_cluster ресурсе ...

resource "azurerm_kubernetes_cluster" "test" {

  // [...]

  service_principal {
    client_id     = "00000000-0000-0000-0000-000000000000"
    client_secret = "00000000000000000000000000000000"
  }
}

Я думаю об этом неправильно?Похоже, что многие ресурсы Azure не согласны с тем, как субъекты службы играют роль.Я предполагаю, что виноваты развивающиеся API, но это кажется простым вопросом ... Возможно, я здесь совершенно не в себе.Мысли?

1 Ответ

0 голосов
/ 14 декабря 2018

Между AKS и ACR с Принципалом обслуживания есть что-то другое.

Для AKS необходимо создать секрет для стручков или сервисов для доступа к ACR, и секрет будет установлен в файле yaml.Таким образом, ему нужны одновременно client_id и client_secret.

Но для ACR вам нужен субъект службы с определенным разрешением, связанным с ним, чтобы другие могли получить к нему доступ.Таким образом, вам просто нужно назначить субъект обслуживания для ACR с настройкой полномочий и client_id.Код терраформы должен выглядеть следующим образом:

resource "azurerm_resource_group" "rg" {
  name     = "resourceGroup1"
  location = "West US"
}

resource "azurerm_container_registry" "acr" {
  name                   = "containerRegistry1"
  resource_group_name    = "${azurerm_resource_group.rg.name}"
  location               = "${azurerm_resource_group.rg.location}"
  sku                    = "Premium"
  admin_enabled          = false
  georeplication_locations = ["East US", "West Europe"]
}

resource "azurerm_azuread_service_principal" "test" {
  application_id = "${azurerm_azuread_application.test.application_id}"
}

resource "azurerm_azuread_service_principal_password" "test" {
  service_principal_id = "${azurerm_azuread_service_principal.test.id}"
  value                = "VT=uSgbTanZhyz@%nL9Hpd+Tfay_MRV#"
  end_date             = "2020-01-01T01:02:03Z"
}

resource "azurerm_role_assignment" "test" {
  scope              = "${azurerm_container_registry.acr.id}"
  role_definition_id = "Contributor"
  principal_id       = "${azurerm_azuread_service_principal_password.test.service_principal_id}"
}

Подробнее см. azurerm_role_assignment .Надеюсь, что это поможет вам.Если вам нужна дополнительная помощь, пожалуйста, дайте мне знать.

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