Terraform 인증

이 문서에서는 Terraform을 사용할 때 Google Cloud에 인증하는 방법을 설명합니다.

애플리케이션 기본 사용자 인증 정보(ADC)는 Terraform을 사용할 때 Google Cloud에 인증하는 데 권장되는 방법입니다. ADC는 애플리케이션 환경을 기준으로 사용자 인증 정보를 자동으로 검색하기 위해 인증 라이브러리에 사용되는 전략입니다. ADC를 사용할 때는 Google Cloud 서비스 및 API에 대한 인증 방법을 변경하지 않고 개발 또는 프로덕션 환경에서 Terraform을 실행할 수 있습니다. ADC가 사용자 인증 정보를 찾는 위치와 순서에 대한 자세한 내용은 애플리케이션 기본 사용자 인증 정보 작동 방법을 참조하세요.

로컬 개발 환경에서 Terraform을 사용할 때 인증

개발 워크스테이션과 같은 로컬 개발 환경에서 Terraform을 사용하는 경우 사용자 계정 또는 서비스 계정과 연결된 사용자 인증 정보를 사용하여 인증할 수 있습니다.

Google 계정을 사용하여 인증

Google 계정으로 ADC를 구성하려면 Google Cloud CLI를 사용합니다.

  1. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init
  2. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    로그인 화면이 표시됩니다. 로그인하면 사용자 인증 정보는 ADC에서 사용하는 로컬 사용자 인증 정보 파일에 저장됩니다.

외부 계정을 사용하여 인증

외부 ID 공급업체에서 관리하는 사용자 계정에 대해 ADC를 구성하려면 다음 단계를 따르세요.

  1. 직원 ID 제휴 구성

  2. 직원 ID 제휴를 사용하도록 gcloud CLI 구성

  3. 다음 명령어를 실행하여 ADC를 구성합니다.

    gcloud auth application-default login

    로그인 화면이 표시됩니다. 로그인하면 사용자 인증 정보는 ADC에서 사용하는 로컬 사용자 인증 정보 파일에 저장됩니다.

서비스 계정 가장을 사용하여 인증

서비스 계정 가장을 사용해서 로컬 ADC 파일을 설정할 수 있습니다. Terraform은 이러한 사용자 인증 정보를 자동으로 사용합니다.

  1. 가장하는 서비스 계정에 대한 서비스 계정 토큰 생성자(roles/iam.serviceAccountTokenCreator) IAM 역할이 있어야 합니다. 자세한 내용은 필요한 역할을 참조하세요.

  2. 서비스 계정 가장을 통해 다음 명령어를 실행하여 로컬 ADC 파일을 만듭니다.

    gcloud auth application-default login --impersonate-service-account SERVICE_ACCT_EMAIL
    

사용자가 환경별로 공유된 기본 인증 소스와 변수 서비스 계정을 사용하도록 허용하려면 Terraform 구성 파일에서 impersonate_service_account 필드를 설정합니다.

provider "google" {
  impersonate_service_account = "SERVICE_ACCT_EMAIL"
}

Google Cloud에서 Terraform을 실행할 때 인증

Cloud Shell과 같은 Google Cloud 클라우드 기반 개발 환경에서 Terraform을 실행하면 이 도구는 인증을 위해 로그인할 때 제공한 사용자 인증 정보를 사용합니다.

Compute Engine, App Engine, Cloud Run 함수와 같은 Google Cloud 서비스에서 Terraform을 사용하면 사용자 관리 서비스 계정을 리소스에 연결할 수 있습니다. 일반적으로 서비스 계정 연결은 해당 서비스의 리소스가 애플리케이션 코드를 실행하거나 포함할 수 있을 때 지원됩니다. 서비스 계정을 리소스에 연결할 때는 리소스에서 실행되는 코드가 이 서비스 계정을 해당 ID로 사용할 수 있습니다.

사용자 관리 서비스 계정 연결은 Google Cloud에서 실행되는 프로덕션 코드에 대해 ADC에 사용자 인증 정보를 제공하기 위해 선호되는 방법입니다.

서비스 계정에 제공해야 하는 역할 확인에 대한 자세한 내용은 사전 정의된 역할 선택을 참조하세요.

서비스 계정에 연결할 수 있는 리소스 및 리소스에 서비스 계정 연결에 대한 자세한 내용은 서비스 계정 연결에 대한 IAM 문서를 참조하세요.

Set up authentication:

  1. Create the service account:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Replace SERVICE_ACCOUNT_NAME with a name for the service account.

  2. To provide access to your project and your resources, grant a role to the service account:

    gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID." --role=ROLE

    Replace the following:

    • SERVICE_ACCOUNT_NAME: the name of the service account
    • PROJECT_ID: the project ID where you created the service account
    • ROLE: the role to grant
  3. To grant another role to the service account, run the command as you did in the previous step.
  4. Grant the required role to the principal that will attach the service account to other resources.

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID. --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

    Replace the following:

    • SERVICE_ACCOUNT_NAME: the name of the service account
    • PROJECT_ID: the project ID where you created the service account
    • USER_EMAIL: the email address for a Google Account

온프레미스 또는 다른 클라우드 제공업체에서 Terraform을 실행할 때 인증

Google Cloud 외부에서 애플리케이션을 실행하는 경우 Google Cloud에서 인식된 사용자 인증 정보를 Google Cloud 서비스에 제공해야 합니다.

워크로드 ID 제휴를 사용하여 인증

외부 IdP의 사용자 인증 정보를 사용하여 Google Cloud에 인증하는 데 선호되는 방법은 워크로드 아이덴티티 제휴를 사용하는 것입니다. 사용자 인증 정보 구성 파일을 만들고 GOOGLE_APPLICATION_CREDENTIALS 환경 변수가 이 파일을 가리키도록 설정할 수 있습니다. 이 방법은 서비스 계정 키를 만드는 것보다 안전합니다. ADC용 워크로드 아이덴티티 제휴 설정에 대한 자세한 내용은 다른 클라우드와의 워크로드 아이덴티티 제휴를 참조하세요.

서비스 계정 키를 사용하여 인증

로컬 개발 환경, 온프레미스 또는 다른 클라우드 제공업체에서 Terraform을 실행할 때는 서비스 계정을 만들고 애플리케이션에 필요한 IAM 역할을 부여한 후 서비스 계정의 키를 만들 수 있습니다.

서비스 계정 키를 만들고 이를 ADC에 제공하려면 다음 안내를 따르세요.

  1. 서비스 계정 키 만들기의 안내에 따라 애플리케이션에 필요한 역할, 서비스 계정에 대한 키를 사용하여 서비스 계정을 만듭니다.

    Set the environment variable GOOGLE_APPLICATION_CREDENTIALS to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again.

Cloud Storage 백엔드에 인증

Terraform을 사용하면 Cloud Storage를 Terraform 상태 파일을 저장할 백엔드로 구성할 수 있습니다. Cloud Storage 백엔드에 인증하려면 이 페이지에 설명된 방법 중 하나를 사용하세요. Cloud Storage 백엔드의 인증과 관련된 구성 변수에 대한 자세한 내용은 Cloud Storage용 Terraform 백엔드 페이지를 참조하세요.

다음 단계