태그를 사용하여 액세스 제어 및 인스턴스 구성

이 페이지에서는 Google Cloud 태그를 사용하여 Spanner 인스턴스에 대한 액세스를 관리하는 방법을 설명합니다.

Google Cloud 태그는 프로젝트 또는 Spanner 인스턴스와 같은 Google Cloud 리소스에 연결할 수 있는 키-값 쌍입니다. 태그를 사용하여 인스턴스를 그룹화하거나 구성하고 인스턴스에 특정 태그가 있는지 여부에 따라 Identity and Access Management(IAM) 액세스 정책을 조건부로 설정할 수 있습니다. Spanner 인스턴스 태그를 만들고 관리하는 것은 Google Cloud CLI 또는 Google Cloud 콘솔을 사용하여 할 수 있습니다. 태그를 만든 후 태그 바인딩을 만들어 Google Cloud 리소스에 태그를 연결하면 됩니다. 태그 바인딩은 Google Cloud 리소스 계층 구조에 따라 리소스의 하위 요소에 상속됩니다. 예를 들어 프로젝트에 태그를 연결하면 해당 프로젝트의 모든 인스턴스가 태그를 상속합니다. 라벨을 사용하여 Google Cloud 리소스를 구성할 수 있지만 라벨을 사용하여 IAM 정책에 조건을 설정할 수는 없습니다.

태그에 대한 자세한 내용은 태그 개요를 참조하세요.

Spanner 인스턴스 태그의 일반적인 사용 사례

태그의 일반적인 사용 사례는 다음과 같습니다.

  • Identity and Access Management(IAM) 태그: 인스턴스에 특정 태그가 있는지 여부에 따라 Identity and Access Management(IAM) 역할을 부여합니다. 태그 값의 존재 여부는 해당 IAM 정책의 조건이며 Spanner 인스턴스에 대한 액세스를 제어하는 데 도움이 됩니다.
  • 상태 태그: 태그를 만들어 인스턴스 상태를 표시하고 관리합니다. 예를 들면 state:active, state:todelete, state:archive입니다.
  • 환경 태그: env:prod, env:dev, env:test 등의 키-값 쌍을 만들어 인스턴스의 프로덕션, 테스트, 개발 환경을 지정합니다.

Spanner 인스턴스 태그를 만들고 관리하는 방법

태그는 키-값 쌍으로 구성됩니다. 조직 리소스 아래에 태그 키를 만든 다음 태그 값을 태그 키에 연결합니다(예: proddev 값을 가진 태그 키 environment). 그런 다음 태그 값을 프로젝트 또는 Spanner 인스턴스와 같은 Google Cloud 리소스에 연결하는 태그 바인딩을 만들 수 있습니다. 데이터베이스에는 태그를 할당할 수 없습니다.

필수 권한

필요한 권한은 수행할 작업에 따라 달라집니다. 자세한 내용은 Resource Manager 문서에서 필수 권한을 참조하세요.

태그 키 및 값 만들기

태그를 인스턴스에 연결하려면 먼저 태그를 만들고 값을 할당해야 합니다. 태그 키 및 태그 값을 만들려면 태그 만들기태그 값 추가를 참조하세요.

인스턴스에 태그 연결

태그 키-값 쌍을 만든 후 태그 바인딩을 만들고 Spanner 인스턴스에 연결할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Spanner 인스턴스 페이지로 이동합니다.

    Spanner 인스턴스로 이동

  2. 태그를 연결할 인스턴스를 선택합니다.

  3. 태그를 클릭합니다.

  4. 조직이 태그 패널에 표시되지 않으면 범위 선택을 클릭합니다. 조직을 선택하고 열기를 클릭합니다.

  5. 태그 패널에서 태그 추가를 선택합니다.

  6. 필드의 목록에서 연결할 태그의 키를 선택합니다. 키워드를 입력하여 목록을 필터링할 수 있습니다.

  7. 필드의 목록에서 연결할 태그의 값을 선택합니다. 키워드를 입력하여 목록을 필터링할 수 있습니다.

  8. 태그를 더 연결하려면 태그 추가를 클릭하고 각 키의 키와 값을 선택합니다.

  9. 저장을 클릭합니다.

  10. 확인 대화상자에서 확인을 클릭하여 태그를 연결합니다.

    태그가 업데이트되었음을 확인하는 알림이 표시됩니다.

gcloud

태그 바인딩을 만들고 인스턴스에 연결하려면 다음 명령어를 실행합니다.

gcloud resource-manager tags bindings create
--parent=//spanner.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID
--tag-value=ORG_ID/KEY_NAME/VALUE_NAME
--location=LOCATION
  • PROJECT_ID: 프로젝트의 ID
  • INSTANCE_ID: 인스턴스의 ID
  • ORG_ID: 조직의 ID
  • KEY_NAME: 태그 키의 (짧은) 표시 이름. 예를 들면 env입니다.
  • VALUE_NAME: 태그 값의 (짧은) 표시 이름. 예를 들면 prod입니다.
  • LOCATION: 인스턴스의 위치. 예를 들면 us-east1입니다.

예를 들어 Spanner 인스턴스 my-instance에서 태그 키-값 쌍 env:prod를 사용하여 태그 바인딩을 만들려면 다음 명령어를 실행하세요.

gcloud resource-manager tags bindings create
--parent=//spanner.googleapis.com/projects/my-project/instances/my-instance
--tag-value=123456789012/env/prod
--location=us-east1

IAM 조건 및 태그

태그 및 IAM 조건을 사용하여 사용자에게 역할 결합을 조건부로 부여할 수 있습니다. 조건부 역할 바인딩이 포함된 IAM 정책이 적용되는 경우 리소스에 연결된 태그를 변경하거나 삭제하면 해당 리소스에 대한 사용자 액세스가 삭제될 수 있습니다.

자세한 내용은 IAM 조건 개요를 참조하세요.

콘솔

태그를 사용하여 사용자에게 역할 바인딩을 조건부로 부여하려면 태그에 대한 액세스 관리를 참조하세요.

gcloud

IAM 정책에 태그 기반 조건을 적용하려면 필요한 권한이 있는지 확인한 후 다음 명령어를 실행합니다.

gcloud organizations add-iam-policy-binding ORG_ID
--role=roles/ROLE --member=PRINCIPAL
--condition=resource.matchTag('PROJECT_ID/KEY_NAME', 'VALUE_NAME')
  • ORG_ID: 조직의 ID
  • ROLE: 주 구성원에 할당되는 역할 이름. 역할 이름은 사전 정의된 역할(예: roles/logging.viewer) 또는 커스텀 역할의 역할 ID(예: organizations/{ORG_ID}/roles/logging.viewer)의 전체 경로입니다.
  • PRINCIPAL: 역할 결합을 추가할 주 구성원. user|group|serviceAccount:email 또는 domain:domain 형식이어야 합니다. 예를 들면 user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com, 또는 domain:example.domain.com입니다.
  • PROJECT_ID: 프로젝트의 ID
  • KEY_NAME: 태그 키의 (짧은) 표시 이름. 예를 들면 env입니다.
  • VALUE_NAME: 태그 값의 (짧은) 표시 이름. 예를 들면 prod입니다.

이 명령어는 조직의 IAM 정책에 IAM 정책 바인딩을 추가합니다. 정책 바인딩은 구성원, 역할, 선택적 조건으로 구성됩니다.

예를 들어 env:prod 태그로 모든 123456789012 프로젝트 리소스의 spanner.backupAdmin 역할을 user1@example.com에 부여하려면 다음 명령어를 실행합니다.

gcloud organizations add-iam-policy-binding my-project
--member=user1@example.com --role=roles/spanner.backupAdmin
--condition=resource.matchTag('123456789012/env', 'prod')

인스턴스에 연결된 태그 나열

인스턴스에 직접 연결되거나 상속되는 태그 바인딩 목록을 볼 수 있습니다.

gcloud

리소스에 직접 연결된 태그 바인딩 목록을 가져오려면 gcloud resource-manager tags bindings list 명령어를 사용합니다. --effective 플래그를 추가하면 이 리소스에서 상속한 모든 태그 바인딩도 가져옵니다.

인스턴스에 연결된 모든 태그 바인딩을 나열하려면 다음 명령어를 실행합니다.

gcloud resource-manager tags bindings list
--parent=//spanner.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID
--location=LOCATION
--effective
  • PROJECT_ID: 프로젝트의 ID
  • INSTANCE_ID: 인스턴스의 ID
  • LOCATION: 인스턴스의 위치. 예를 들면 us-east1입니다.

태그 바인딩 삭제

태그 키 또는 값 정의를 삭제할 때는 태그가 인스턴스에서 분리되었는지 확인하세요. 태그를 삭제하기 전에 기존 태그 바인딩을 삭제해야 합니다.

콘솔

  1. Google Cloud 콘솔에서 Spanner 인스턴스 페이지로 이동합니다.

    Spanner 인스턴스로 이동

  2. 태그 바인딩을 삭제할 인스턴스를 선택합니다.

  3. 태그를 클릭합니다.

  4. 태그 패널에서 분리하려는 태그 옆에 있는 항목 삭제를 클릭합니다.

  5. 저장을 클릭합니다.

  6. 확인 대화상자에서 확인을 클릭하여 태그를 분리합니다.

    태그가 업데이트되었음을 확인하는 알림이 표시됩니다.

gcloud

태그 바인딩을 삭제하려면 다음 명령어를 실행합니다.

gcloud resource-manager tags bindings delete
--parent=//spanner.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID
--tag-value=ORG_ID/KEY_NAME/KEY_VALUE
--location=LOCATION
  • PROJECT_ID: 프로젝트의 ID
  • INSTANCE_ID: 인스턴스의 ID
  • ORG_ID: 조직의 ID
  • KEY_NAME: 태그 키의 (짧은) 표시 이름. 예를 들면 env입니다.
  • VALUE_NAME: 태그 값의 (짧은) 표시 이름. 예를 들면 prod입니다.
  • LOCATION: 인스턴스의 위치. 예를 들면 us-east1입니다.

태그 삭제

태그 바인딩을 삭제한 후 태그를 삭제할 수 있습니다. 태그 키와 태그 값을 삭제하려면 태그 삭제를 참조하세요.

다음 단계