#azure #terraform #azure-data-factory #azure-data-factory-2 #terraform-provider-azure
Вопрос:
Я пытаюсь развернуть фабрику данных Azure вместе с управляемым клиентом ключом и удостоверением, но после применения terraform управляемый клиентом ключ не отображается в фабрике данных. Когда я пытаюсь добавить ключ, управляемый клиентом, вручную в фабрику данных, он выдает ошибку ниже. Операция не удалась. Управляемая идентификация, используемая в CMK, не найдена.
data "azurerm_client_config" "main" {}
resource "azurerm_resource_group" "main" {
name = "rgsupports01"
location = "East US 2"
}
resource "azurerm_user_assigned_identity" "main" {
depends_on = [azurerm_resource_group.main]
name = "supports01-mid"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
}
resource "azurerm_key_vault" "main" {
name = "supportskv01"
location = azurerm_resource_group.main.location
resource_group_name = azurerm_resource_group.main.name
enabled_for_disk_encryption = true
tenant_id = data.azurerm_client_config.main.tenant_id
soft_delete_retention_days = 7
purge_protection_enabled = false
sku_name = "standard"
access_policy {
tenant_id = data.azurerm_client_config.main.tenant_id
object_id = data.azurerm_client_config.main.object_id
key_permissions = [
"Get",
"Unwrapkey",
"Wrapkey",
"Create",
"Delete",
]
secret_permissions = [
"Get",
]
storage_permissions = [
"Get",
]
}
}
resource "azurerm_key_vault_access_policy" "main" {
key_vault_id = azurerm_key_vault.main.id
tenant_id = data.azurerm_client_config.main.tenant_id
object_id = azurerm_user_assigned_identity.main.client_id
key_permissions = [
"Get","List","Unwrapkey","Wrapkey"
]
secret_permissions = [
"Get","List",
]
}
resource "azurerm_key_vault_key" "main" {
depends_on = [azurerm_key_vault_access_policy.main]
name = "supportrsakeys01"
key_vault_id = azurerm_key_vault.main.id
key_type = "RSA"
key_size = 2048
key_opts = [
"decrypt",
"encrypt",
"sign",
"unwrapKey",
"verify",
"wrapKey",
]
}
resource "azurerm_data_factory" "adf" {
#depends_on = [azurerm_key_vault_key.main]
name = "supportdfs01"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
public_network_enabled = false
customer_managed_key_id = resource.azurerm_key_vault_key.main.id
identity {
type = "UserAssigned"
identity_ids = [resource.azurerm_user_assigned_identity.main.id]
}
}
resource "azurerm_key_vault_access_policy" "new" {
depends_on = [azurerm_data_factory.adf]
key_vault_id = azurerm_key_vault.main.id
tenant_id = data.azurerm_client_config.main.tenant_id
object_id = azurerm_user_assigned_identity.main.principal_id
key_permissions = [
"Get","List","Unwrapkey","Wrapkey"
]
secret_permissions = [
"Get","List",
]
}
Комментарии:
1. как насчет того, чтобы показать нам свой код терраформирования?!
2. обновите свой вопрос и поместите туда свой код
3. Я только что обновил вопрос. Спасибо
Ответ №1:
Не указывайте конкретные access_policy
ресурсы хранилища ключей, используйте только azurerm_key_vault_access_policy
ресурсы. То, как вы это указали, приведет к конфликтам и, вероятно, испортит политику доступа. Смотри здесь.
Комментарии:
1. Я удалил access_policy из хранилища ключей и развернул фабрику данных. Ключ, управляемый клиентом, пуст. Ничего особенного. Попробовал прикрепить ключ вручную. Все та же ошибка 🙁
2. действительно ли ключ присутствует в хранилище ключей, и вы проверили на портале, правильно ли настроена политика доступа?
3. Да, я создаю ключ вместе с фабрикой данных с помощью приведенного выше сценария. Я вижу управляемую идентификацию, принцип обслуживания, идентификатор клиента и моего пользователя в политике доступа.
4. Да, я имею в виду, сможете ли вы увидеть ключ в хранилище ключей после применения терраформирования?
5. почему у тебя это
depends_on = [azurerm_data_factory.adf]
есть ? это предоставит доступ к ключу только после развертывания adf