azurerm 백엔드

azurerm 백엔드

Azure Blob Storage 계정의 Blob Container 안에서 주어진 Key로 state를 Blob으로 저장하는 azurerm 백엔드를 설명해 드릴게요. 인증 방법이 다양하니 하나씩 살펴볼게요.

출처: 문서

본문

azurerm 백엔드는 Blob Storage 계정의 Blob Container 안에서 주어진 Key로 state를 Blob으로 저장해요. 이 백엔드는 Azure Blob Storage 네이티브 기능으로 state 잠금과 일관성 검사를 지원해요.

인증 (Authentication)

경고: 자격 증명과 기타 민감 데이터를 제공할 때는 환경 변수를 사용하는 것을 권장해요. -backend-config를 사용하거나 이런 값을 구성에 직접 하드코딩하면 Terraform이 .terraform 하위 디렉터리와 plan 파일 양쪽에 이 값을 포함해요. 자세한 내용은 Credentials and Sensitive Data를 참고해요.

azurerm 백엔드는 storage account container에서 state 파일 Blob을 조작하려면 storage account 데이터 플레인(data plane)에 인증해야 해요. 그러려면 인증을 수행하고 storage account의 데이터 플레인 URI를 알아야 해요. azurerm 백엔드는 storage account 데이터 플레인에 인증하는 5가지 방법을 지원해요:

Microsoft Entra ID 및 Access Key Lookup 인증 유형

Microsoft Entra ID 및 Access Key Lookup 방법에 적용되는 5가지 Microsoft Entra ID 인증 유형이 있어요:

  • OpenID Connect / Workload identity federation (권장)
  • Federated Credentials가 있는 User Assigned Managed Identity (권장)
  • Federated Credentials가 있는 Service Principal / App Registration (권장)
  • Azure 컴퓨트 인스턴스(에이전트/런너)에 연결된 User 또는 System Assigned Managed Identity
    • Azure 컴퓨트 인스턴스(에이전트/런너)에 연결된 User Assigned Managed Identity
    • Azure 컴퓨트 인스턴스(에이전트/런너)에 연결된 System Assigned Managed Identity
  • Client Secret이 있는 Service Principal / App Registration
  • Client Certificate가 있는 Service Principal / App Registration
  • Azure CLI만 사용하는 사용자 계정 (로컬 개발 주기용)

이 유형들은 입력 또는 사전 인증된 Azure CLI를 통해 제공될 수 있어요.

데이터 플레인 URI (Data Plane URI)

대부분의 경우 storage_account_namecontainer_name으로 데이터 플레인 URI를 추론할 수 있어요. 표준 엔드포인트에 대한 자세한 내용은 storage account 개요 문서를 참고해요. 'Azure DNS zone endpoints' 기능을 사용한다면 백엔드가 관리 플레인(management plane)에서 데이터 플레인 URI를 조회해야 해요. 이를 위해 lookup_blob_endpoint 구성 옵션을 true로 설정하고 storage account에 Reader 역할 할당이 필요해요.

Microsoft Entra ID

이 방법은 유효한 Microsoft Entra ID 주체와 예측 가능한 storage account 데이터 플레인 URI를 요구해요.

항상 필요한 구성 옵션:

  • use_azuread_auth - storage account 데이터 플레인에 Microsoft Entra ID 인증을 사용하려면 true로 설정. ARM_USE_AZUREAD 환경 변수로도 설정 가능.
  • tenant_id - storage account 데이터 플레인 인증에 Microsoft Entra ID 주체의 tenant ID 필요. Azure CLI를 사용하면 CLI 세션에서 추론 가능. ARM_TENANT_ID 환경 변수로도 설정 가능.
  • storage_account_name - state 파일 Blob을 쓸 storage account의 이름.
  • container_name - state 파일 Blob을 쓸 storage account container의 이름.
  • key - state 파일을 쓸 storage account container 안의 Blob 이름.

선택 입력:

  • lookup_blob_endpoint - 관리 플레인에서 storage account 데이터 플레인 URI를 조회하려면 true로 설정. 'Azure DNS zone endpoints' 기능을 사용한다면 필요. 기본값은 false. ARM_USE_DNS_ZONE_ENDPOINT 환경 변수에서도 가져올 수 있어요.
  • subscription_id - 관리 플레인을 조회하려면 storage account의 subscription ID 필요. lookup_blob_endpointtrue인 경우에만 필요. Azure CLI를 사용하면 CLI 세션에서 추론 가능. ARM_SUBSCRIPTION_ID 환경 변수로도 설정 가능.
  • resource_group_name - 관리 플레인을 조회하려면 storage account의 리소스 그룹 이름 필요. lookup_blob_endpointtrue인 경우에만 필요.

Storage Account 필수 역할 할당:

  • 데이터 플레인: storage account container의 Storage Blob Data Contributor (최소 권한 권장)
  • 관리 플레인: storage account의 Reader (lookup_blob_endpointtrue인 경우에만 필요)
OpenID Connect / Workload identity federation을 사용한 Microsoft Entra ID

항상 필요한 추가 구성 옵션:

  • use_oidc - OpenID Connect / Workload identity federation으로 storage account 데이터 플레인 인증을 사용하려면 true로 설정. ARM_USE_OIDC 환경 변수로도 설정 가능.
  • client_id - storage account 데이터 플레인 인증에 Microsoft Entra ID Service Principal / App Registration 또는 User Assigned Managed Identity의 client ID 필요. ARM_CLIENT_ID 환경 변수로도 설정 가능.

GitHub용 예시 구성: GitHub에서는 ID Token 환경 변수가 자동으로 발견되므로 추가 설정이 필요 없어요.

terraform {
  backend "azurerm" {
    use_oidc             = true                                    # `ARM_USE_OIDC` 환경 변수로도 설정 가능.
    use_azuread_auth     = true                                    # `ARM_USE_AZUREAD` 환경 변수로도 설정 가능.
    tenant_id            = "00000000-0000-0000-0000-000000000000"  # `ARM_TENANT_ID` 환경 변수로도 설정 가능.
    client_id            = "00000000-0000-0000-0000-000000000000"  # `ARM_CLIENT_ID` 환경 변수로도 설정 가능.
    storage_account_name = "abcd1234"                              # `init` 명령의 `-backend-config="storage_account_name="`로 전달 가능.
    container_name       = "tfstate"                               # `init` 명령의 `-backend-config="container_name="`로 전달 가능.
    key                  = "prod.terraform.tfstate"                # `init` 명령의 `-backend-config="key="`로 전달 가능.
  }
}

Azure DevOps용 예시 구성: Azure DevOps에서는 ID Token 엔드포인트 환경 변수가 자동으로 발견되지만 oidc_azure_service_connection_id에 서비스 연결 ID를 제공해야 해요. AzureCLI 또는 AzurePowerShell 작업을 사용하면 서비스 연결 ID가 자동으로 AZURESUBSCRIPTION_SERVICE_CONNECTION_ID 환경 변수로 설정돼요.

terraform {
  backend "azurerm" {
    use_oidc                         = true                                    # `ARM_USE_OIDC` 환경 변수로도 설정 가능.
    oidc_azure_service_connection_id = "00000000-0000-0000-0000-000000000000"  # `ARM_OIDC_AZURE_SERVICE_CONNECTION_ID` 환경 변수로도 설정 가능.
    use_azuread_auth                 = true                                    # `ARM_USE_AZUREAD` 환경 변수로도 설정 가능.
    tenant_id                        = "00000000-0000-0000-0000-000000000000"  # `ARM_TENANT_ID` 환경 변수로도 설정 가능.
    client_id                        = "00000000-0000-0000-0000-000000000000"  # `ARM_CLIENT_ID` 환경 변수로도 설정 가능.
    storage_account_name             = "abcd1234"                              # `init` 명령의 `-backend-config="storage_account_name="`로 전달 가능.
    container_name                   = "tfstate"                               # `init` 명령의 `-backend-config="container_name="`로 전달 가능.
    key                              = "prod.terraform.tfstate"                # `init` 명령의 `-backend-config="key="`로 전달 가능.
  }
}
Compute 연결 Managed Identity를 사용한 Microsoft Entra ID

항상 필요한 추가 구성 옵션:

  • use_msi - managed identity로 storage account 데이터 플레인 인증을 사용하려면 true로 설정. ARM_USE_MSI 환경 변수로도 설정 가능.

선택 구성 옵션:

  • client_id - User Assigned Managed Identity의 client ID. System Assigned Managed Identity에는 필요 없음. ARM_CLIENT_ID 환경 변수로도 설정 가능.
terraform {
  backend "azurerm" {
    use_msi              = true                                    # `ARM_USE_MSI` 환경 변수로도 설정 가능.
    use_azuread_auth     = true                                    # `ARM_USE_AZUREAD` 환경 변수로도 설정 가능.
    tenant_id            = "00000000-0000-0000-0000-000000000000"  # `ARM_TENANT_ID` 환경 변수로도 설정 가능.
    client_id            = "00000000-0000-0000-0000-000000000000"  # `ARM_CLIENT_ID` 환경 변수로도 설정 가능. System Assigned Managed Identity에는 필요 없음.
    storage_account_name = "abcd1234"                              # `init` 명령의 `-backend-config="storage_account_name="`로 전달 가능.
    container_name       = "tfstate"                               # `init` 명령의 `-backend-config="container_name="`로 전달 가능.
    key                  = "prod.terraform.tfstate"                # `init` 명령의 `-backend-config="key="`로 전달 가능.
  }
}
Azure CLI를 사용한 Microsoft Entra ID

지원되는 어떤 방법으로든 사전 인증된 Azure CLI 세션이 있어야 해요.

항상 필요한 추가 구성 옵션:

  • use_cli - Azure CLI 세션으로 storage account 데이터 플레인 인증을 사용하려면 true로 설정. ARM_USE_CLI 환경 변수로도 설정 가능.
terraform {
  backend "azurerm" {
    use_cli              = true                                    # `ARM_USE_CLI` 환경 변수로도 설정 가능.
    use_azuread_auth     = true                                    # `ARM_USE_AZUREAD` 환경 변수로도 설정 가능.
    tenant_id            = "00000000-0000-0000-0000-000000000000"  # `ARM_TENANT_ID` 환경 변수로도 설정 가능. 제공하지 않으면 Azure CLI가 연결된 tenant ID를 대신 사용.
    storage_account_name = "abcd1234"                              # `init` 명령의 `-backend-config="storage_account_name="`로 전달 가능.
    container_name       = "tfstate"                               # `init` 명령의 `-backend-config="container_name="`로 전달 가능.
    key                  = "prod.terraform.tfstate"                # `init` 명령의 `-backend-config="key="`로 전달 가능.
  }
}
Client Secret을 사용한 Microsoft Entra ID

Terraform은 이 방법을 하위 호환성 전용으로 유지하므로 새 워크로드에는 사용하지 마세요.

경고: 이 방법은 시크릿을 관리·교체해야 해요. 더 안전한 접근으로 OpenID Connect / Workload identity federation을 사용해요.

항상 필요한 추가 입력:

  • client_id - storage account 데이터 플레인 인증에 Microsoft Entra ID Service Principal / App Registration의 client ID 필요. ARM_CLIENT_ID 환경 변수로도 설정 가능.
  • client_secret - storage account 데이터 플레인 인증에 Microsoft Entra ID Service Principal / App Registration의 client secret 필요. ARM_CLIENT_SECRET 환경 변수로도 설정 가능.
terraform {
  backend "azurerm" {
    use_azuread_auth     = true                                    # `ARM_USE_AZUREAD` 환경 변수로도 설정 가능.
    tenant_id            = "00000000-0000-0000-0000-000000000000"  # `ARM_TENANT_ID` 환경 변수로도 설정 가능.
    client_id            = "00000000-0000-0000-0000-000000000000"  # `ARM_CLIENT_ID` 환경 변수로도 설정 가능.
    client_secret        = "************************************"  # `ARM_CLIENT_SECRET` 환경 변수로도 설정 가능.
    storage_account_name = "abcd1234"                              # `init` 명령의 `-backend-config="storage_account_name="`로 전달 가능.
    container_name       = "tfstate"                               # `init` 명령의 `-backend-config="container_name="`로 전달 가능.
    key                  = "prod.terraform.tfstate"                # `init` 명령의 `-backend-config="key="`로 전달 가능.
  }
}
Client Certificate를 사용한 Microsoft Entra ID

Terraform은 이 방법을 하위 호환성 전용으로 유지하므로 새 워크로드에는 사용하지 마세요. 시크릿 관리·교체가 필요하므로 OpenID Connect / Workload identity federation을 사용해요.

항상 필요한 추가 입력:

  • client_id - storage account 데이터 플레인 인증에 Microsoft Entra ID Service Principal / App Registration의 client ID 필요. ARM_CLIENT_ID 환경 변수로도 설정 가능.
  • client_certificate_path - storage account 데이터 플레인 인증에 클라이언트 인증서 번들 경로 필요. ARM_CLIENT_CERTIFICATE_PATH 환경 변수로도 설정 가능.
  • client_certificate_password - storage account 데이터 플레인 인증에 클라이언트 인증서 번들의 비밀번호 필요. ARM_CLIENT_CERTIFICATE_PASSWORD 환경 변수로도 설정 가능.
terraform {
  backend "azurerm" {
    use_azuread_auth            = true                                    # `ARM_USE_AZUREAD` 환경 변수로도 설정 가능.
    tenant_id                   = "00000000-0000-0000-0000-000000000000"  # `ARM_TENANT_ID` 환경 변수로도 설정 가능.
    client_id                   = "00000000-0000-0000-0000-000000000000"  # `ARM_CLIENT_ID` 환경 변수로도 설정 가능.
    client_certificate_path     = "/path/to/bundle.pfx"                   # `ARM_CLIENT_CERTIFICATE_PATH` 환경 변수로도 설정 가능.
    client_certificate_password = "************************************"  # `ARM_CLIENT_CERTIFICATE_PASSWORD` 환경 변수로도 설정 가능.
    storage_account_name        = "abcd1234"                              # `init` 명령의 `-backend-config="storage_account_name="`로 전달 가능.
    container_name              = "tfstate"                               # `init` 명령의 `-backend-config="container_name="`로 전달 가능.
    key                         = "prod.terraform.tfstate"                # `init` 명령의 `-backend-config="key="`로 전달 가능.
  }
}

Access Key

이 방법은 storage account의 Access Key를 찾아 백엔드 구성에 제공해야 해요. Access Key는 storage account 데이터 플레인에 직접 인증하는 데 사용돼요. Terraform은 하위 호환성을 위해 이 방법을 유지하며, 새 워크로드에는 권장하지 않아요.

항상 필요한 구성 옵션:

  • access_key - storage account 데이터 플레인 인증에 storage account의 Access Key 필요. ARM_ACCESS_KEY 환경 변수로도 설정 가능.
  • storage_account_name - state 파일 Blob을 쓸 storage account의 이름.
  • container_name - state 파일 Blob을 쓸 container의 이름.
  • key - state 파일을 쓸 container 안의 Blob 이름.

Storage Account 필수 역할 할당: Access Key로 데이터 플레인에 인증하므로 storage account에 필요한 역할 할당이 없어요.

경고: 이 방법은 시크릿을 관리·교체해야 해요. 더 안전한 접근으로 OIDC를 고려해요.

terraform {
  backend "azurerm" {
    access_key           = "abcdefghijklmnopqrstuvwxyz0123456789..."  # `ARM_ACCESS_KEY` 환경 변수로도 설정 가능.
    storage_account_name = "abcd1234"                                 # `init` 명령의 `-backend-config="storage_account_name="`로 전달 가능.
    container_name       = "tfstate"                                  # `init` 명령의 `-backend-config="container_name="`로 전달 가능.
    key                  = "prod.terraform.tfstate"                   # `init` 명령의 `-backend-config="key="`로 전달 가능.
  }
}

SAS Token

이 방법은 storage account container 또는 Blob용 SAS Token을 생성해 백엔드 구성에 제공해야 해요. SAS Token은 storage account 데이터 플레인에 직접 인증하는 데 사용돼요. Terraform은 하위 호환성을 위해 유지하며 새 워크로드에는 권장하지 않아요.

항상 필요한 구성 옵션:

Storage Account 필수 권한: SAS Token은 container 또는 Blob에 writelist 권한을 요구해요.

경고: 이 방법은 시크릿을 관리·교체해야 해요. 더 안전한 접근으로 OIDC를 고려해요.

terraform {
  backend "azurerm" {
    sas_token            = "abcdefghijklmnopqrstuvwxyz0123456789..."  # `ARM_SAS_TOKEN` 환경 변수로도 설정 가능.
    storage_account_name = "abcd1234"                                 # `init` 명령의 `-backend-config="storage_account_name="`로 전달 가능.
    container_name       = "tfstate"                                  # `init` 명령의 `-backend-config="container_name="`로 전달 가능.
    key                  = "prod.terraform.tfstate"                   # `init` 명령의 `-backend-config="key="`로 전달 가능.
  }
}

Access Key Lookup

이 방법은 유효한 Microsoft Entra ID 주체를 요구하며, storage account 데이터 플레인에서 Microsoft Entra ID 인증을 사용할 수 없을 때의 폴백이에요. 이 방법은 관리 플레인을 조회해 storage account Access Key를 얻은 다음 그 Access Key로 데이터 플레인에 인증해요. storage account에 대한 승격된 권한을 요구해요. Terraform은 하위 호환성을 위해 유지하며 새 워크로드에는 권장하지 않아요.

항상 필요한 구성 옵션: tenant_id(ARM_TENANT_ID), subscription_id(ARM_SUBSCRIPTION_ID), resource_group_name, storage_account_name, container_name, key. (subscription_idtenant_id는 Azure CLI를 사용하면 CLI 세션에서 추론 가능.)

선택 구성 옵션:

  • lookup_blob_endpoint - 관리 플레인에서 데이터 플레인 URI를 조회하려면 true로 설정. 'Azure DNS zone endpoints' 기능을 사용한다면 필요. 기본값은 false. ARM_USE_DNS_ZONE_ENDPOINT 환경 변수에서도 가져올 수 있어요.

Storage Account 필수 역할 할당:

  • 데이터 플레인: storage account container의 Storage Blob Data Contributor (최소 권한 권장)
  • 관리 플레인: storage account의 Reader, storage account의 Storage Account Key Operator Service Role

이 시나리오에 권장되는 방법은 OpenID Connect / Workload identity federation이에요.

필수 추가 구성 옵션 (OIDC): use_oidc(ARM_USE_OIDC), client_id(ARM_CLIENT_ID).

GitHub용 예시:

terraform {
  backend "azurerm" {
    use_oidc             = true                                    # `ARM_USE_OIDC` 환경 변수로도 설정 가능.
    tenant_id            = "00000000-0000-0000-0000-000000000000"  # `ARM_TENANT_ID` 환경 변수로도 설정 가능.
    subscription_id      = "00000000-0000-0000-0000-000000000000"  # `ARM_SUBSCRIPTION_ID` 환경 변수로도 설정 가능.
    client_id            = "00000000-0000-0000-0000-000000000000"  # `ARM_CLIENT_ID` 환경 변수로도 설정 가능.
    resource_group_name  = "StorageAccount-ResourceGroup"          # `init` 명령의 `-backend-config="resource_group_name="`로 전달 가능.
    storage_account_name = "abcd1234"                              # `init` 명령의 `-backend-config="storage_account_name="`로 전달 가능.
    container_name       = "tfstate"                               # `init` 명령의 `-backend-config="container_name="`로 전달 가능.
    key                  = "prod.terraform.tfstate"                # `init` 명령의 `-backend-config="key="`로 전달 가능.
  }
}

Azure DevOps용 예시에서는 oidc_azure_service_connection_id에 서비스 연결 ID를 제공해야 해요(ARM_OIDC_AZURE_SERVICE_CONNECTION_ID).

Access Key Lookup + Compute Attached Managed Identity: use_msi(ARM_USE_MSI)를 true로 설정하고 필요시 client_id를 제공 (System Assigned에는 불필요).

Access Key Lookup + Azure CLI: use_clitrue로 설정하고 사전 인증된 Azure CLI 세션이 필요.

Access Key Lookup + Client Secret / Client Certificate: 하위 호환성 전용. client_id + client_secret / client_certificate_path + client_certificate_password 필요. OIDC 사용 권장.

terraform_remote_state 데이터 소스

azurerm 백엔드와 함께 terraform_remote_state 데이터 소스를 사용하려면 구성의 backend 블록과 정확히 동일한 구성을 사용해야 해요. 예를 들어 GitHub용 OpenID Connect / Workload identity federation을 사용한 직접 Microsoft Entra ID 인증을 사용하려면 다음 구성으로 해요:

data "terraform_remote_state" "foo" {
  backend = "azurerm"
  config = {
    use_oidc             = true                                    # `ARM_USE_OIDC` 환경 변수로도 설정 가능.
    use_azuread_auth     = true                                    # `ARM_USE_AZUREAD` 환경 변수로도 설정 가능.
    tenant_id            = "00000000-0000-0000-0000-000000000000"  # `ARM_TENANT_ID` 환경 변수로도 설정 가능.
    client_id            = "00000000-0000-0000-0000-000000000000"  # `ARM_CLIENT_ID` 환경 변수로도 설정 가능.
    storage_account_name = "abcd1234"                              # 이 입력에는 환경 변수 지원이 없음.
    container_name       = "tfstate"                               # 이 입력에는 환경 변수 지원이 없음.
    key                  = "prod.terraform.tfstate"                # 이 입력에는 환경 변수 지원이 없음.
  }
}

구성 변수 (Configuration Variables)

경고: 자격 증명과 기타 민감 데이터를 제공할 때는 환경 변수를 사용하는 것을 권장해요. -backend-config를 사용하거나 이런 값을 구성에 직접 하드코딩하면 Terraform이 .terraform 하위 디렉터리와 plan 파일 양쪽에 이 값을 포함해요.

지원하는 구성 옵션:

  • storage_account_name - (필수) 스토리지 계정의 이름.
  • container_name - (필수) Storage Account 안의 Storage Container 이름.
  • key - (필수) Storage Container 안에서 Terraform state 파일을 검색/저장하는 데 사용하는 Blob 이름.
  • environment - (선택) 사용할 Azure 환경. ARM_ENVIRONMENT 환경 변수에서도 가져올 수 있어요. 가능 값은 public, china, usgovernment. 기본값은 public.
  • metadata_host - (선택) Azure Metadata Service의 호스트 이름(예: management.azure.com). 커스텀 Azure 환경을 사용할 때 Cloud Environment를 얻는 데 사용. ARM_METADATA_HOSTNAME 환경 변수에서도 가져올 수 있어요.
  • lookup_blob_endpoint - (선택) 관리 플레인에서 Storage Account 데이터 플레인 URI를 조회하려면 true로 설정. 기본값은 false. ARM_USE_DNS_ZONE_ENDPOINT 환경 변수에서도 가져올 수 있어요.
  • snapshot - (선택) 사용 전에 Terraform state 파일을 저장하는 Blob을 스냅샷하려면 true로 설정. 기본값은 false. ARM_SNAPSHOT 환경 변수에서도 가져올 수 있어요.
  • tenant_id - (선택) 주체의 Tenant ID. ARM_TENANT_ID 환경 변수에서도 가져올 수 있어요.
  • use_azuread_auth - (선택) storage account 데이터 플레인 인증에 Microsoft Entra ID 인증 사용 여부. ARM_USE_AZUREAD 환경 변수에서도 가져올 수 있어요.
  • subscription_id - (선택) 관리 플레인 인증에 필요한 storage account의 Subscription ID. ARM_SUBSCRIPTION_ID 환경 변수에서도 가져올 수 있어요.
  • resource_group_name - (선택) 관리 플레인 인증에 필요한 Storage Account가 존재하는 Resource Group의 이름.
  • access_key - (선택) 직접 Access Key 인증 방법으로 storage account 데이터 플레인에 인증하는 데 사용하는 Access Key. ARM_ACCESS_KEY 환경 변수에서도 가져올 수 있어요.
  • sas_token - (선택) 직접 SAS Token 인증 방법으로 storage account 데이터 플레인에 인증하는 데 사용하는 SAS Token. ARM_SAS_TOKEN 환경 변수에서도 가져올 수 있어요.
  • use_cli - (선택) storage account 관리·데이터 플레인 인증에 Azure CLI 세션을 사용하려면 true로 설정. ARM_USE_CLI 환경 변수에서도 가져올 수 있어요.
  • use_oidc - (선택) storage account 관리·데이터 플레인 인증에 OpenID Connect / Workload identity federation을 사용하려면 true로 설정. ARM_USE_OIDC 환경 변수에서도 가져올 수 있어요.
  • client_id - (선택) 일부 인증 하위 유형에 필요한 Microsoft Entra ID 주체의 Client ID. ARM_CLIENT_ID 환경 변수에서도 가져올 수 있어요.
  • ado_pipeline_service_connection_id - (선택) Azure DevOps와 Open ID Connect / Workload identity federation 인증에 필요한 Azure DevOps Pipeline Service Connection ID. ARM_ADO_PIPELINE_SERVICE_CONNECTION_ID 또는 ARM_OIDC_AZURE_SERVICE_CONNECTION_ID 환경 변수에서도 가져올 수 있어요. 프로바이더는 이 순서대로 값을 찾아 먼저 찾은 것을 사용해요.
  • oidc_request_url - (선택) ID 토큰을 요청하는 Open ID Connect 프로바이더의 URL. 고급 시나리오나 타사 연동에만 필요. ARM_OIDC_REQUEST_URL, ACTIONS_ID_TOKEN_REQUEST_URL, SYSTEM_OIDCREQUESTURI 환경 변수에서도 가져올 수 있어요.
  • oidc_request_token - (선택) Open ID Connect 프로바이더에 대한 요청의 bearer 토큰. 고급 시나리오나 타사 연동에만 필요. ARM_OIDC_REQUEST_TOKEN, ACTIONS_ID_TOKEN_REQUEST_TOKEN, SYSTEM_ACCESSTOKEN 환경 변수에서도 가져올 수 있어요.
  • oidc_token - (선택) OpenID Connect로 인증할 때의 ID 토큰. 고급 시나리오나 타사 연동에만 필요. ARM_OIDC_TOKEN 환경 변수에서도 가져올 수 있어요.
  • oidc_token_file_path - (선택) OpenID Connect로 인증할 때 ID 토큰을 포함한 파일의 경로. 고급 시나리오나 타사 연동에만 필요. ARM_OIDC_TOKEN_FILE_PATH 환경 변수에서도 가져올 수 있어요.
  • use_aks_workload_identity - (선택) 인증에 Azure AKS Workload Identity를 사용하려면 true로 설정. 고급 시나리오나 타사 연동에만 필요. ARM_USE_AKS_WORKLOAD_IDENTITY 환경 변수에서도 가져올 수 있어요.
  • use_msi - (선택) storage account 관리·데이터 플레인 인증에 Compute Attached Managed Service Identity를 사용하려면 true로 설정. ARM_USE_MSI 환경 변수에서도 가져올 수 있어요.
  • msi_endpoint - (선택) 커스텀 Managed Service Identity 엔드포인트의 경로. 지정하지 않으면 자동으로 결정돼요. ARM_MSI_ENDPOINT 환경 변수에서도 가져올 수 있어요.
  • client_id_file_path - (선택) 사용할 Client ID를 포함한 파일의 경로. ARM_CLIENT_ID_FILE_PATH 환경 변수에서도 가져올 수 있어요.
  • client_certificate_password - (선택) client_certificate_path에 지정된 Client Certificate와 연관된 비밀번호. ARM_CLIENT_CERTIFICATE_PASSWORD 환경 변수에서도 가져올 수 있어요.
  • client_certificate_path - (선택) Service Principal로 인증할 때 Client Certificate로 사용하는 PFX 파일 경로. ARM_CLIENT_CERTIFICATE_PATH 환경 변수에서도 가져올 수 있어요.
  • client_certificate - (선택) Client Certificate로 Service Principal로 인증할 때 사용하는 base64 인코딩 PKCS#12 인증서 번들. ARM_CLIENT_CERTIFICATE 환경 변수에서도 가져올 수 있어요.
  • client_secret - (선택) Service Principal의 Client Secret. ARM_CLIENT_SECRET 환경 변수에서도 가져올 수 있어요.
  • client_secret_file_path - (선택) 사용할 Client Secret을 포함한 파일의 경로. ARM_CLIENT_SECRET_FILE_PATH 환경 변수에서도 가져올 수 있어요.

더 알아보기 (Learn more)