Lakehouse Iceberg REST ACL 관리

Lakehouse for Apache IcebergLakehouse 런타임 카탈로그를 사용하는 Cloud Storage의 Apache Iceberg 테이블에 대한 카탈로그 수준, 네임스페이스 수준, 테이블 수준 액세스 제어를 지원합니다.

Lakehouse 런타임 카탈로그는 메타데이터를 관리하고 Identity and Access Management (IAM) 정책은 권한을 정의합니다. 콘솔 또는 gcloud CLI를 사용하여 이러한 IAM 정책을 가져오고 설정할 수 있습니다.Google Cloud

시작하기 전에

  1. 프로젝트에 결제가 사용 설정되어 있는지 확인합니다 Google Cloud .

  2. BigLake API를 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 serviceusage.services.enable 권한이 포함된 서비스 사용량 관리자 IAM 역할(roles/serviceusage.serviceUsageAdmin)이 필요합니다. 역할 부여 방법 알아보기

    API 사용 설정하기

  3. Google Cloud SDK를 설치하고 초기화합니다.
  4. 기존 Apache Iceberg REST 카탈로그 엔드포인트 및 네임스페이스가 있는지 확인합니다.
  5. 지정된 카탈로그 및 네임스페이스 내에 기존 Lakehouse Iceberg 테이블이 있는지 확인합니다.

필요한 역할

Iceberg 카탈로그, 네임스페이스, 테이블의 액세스 제어 목록 (ACL)을 관리하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

작동 방식

IAM 정책은 리소스에 대한 특정 역할과 권한을 가진 주 구성원을 정의합니다. 이러한 정책을 가져오고 설정하여 리소스에 대한 액세스를 관리할 수 있습니다.

IAM 역할 범위

리소스 계층 구조의 여러 수준에서 IAM 역할을 부여할 수 있습니다.

  • 프로젝트 수준: 프로젝트의 모든 Lakehouse 리소스에 대한 액세스 권한을 부여합니다.
  • 카탈로그 수준: 지정된 카탈로그에 속한 리소스에 대한 액세스 권한을 부여합니다.
  • 네임스페이스 수준: 지정된 네임스페이스에 속한 리소스에 대한 액세스 권한을 부여합니다.
  • 테이블 수준: 지정된 테이블에만 액세스 권한을 부여합니다.

관련 IAM 역할

다음 목록에는 Lakehouse 리소스에 적용할 수 있는 일반적인 IAM 역할이 나와 있습니다. 사용 가능한 역할과 관련 권한의 전체 목록은 Lakehouse IAM 역할을 참조하세요.

  • roles/biglake.admin: Lakehouse 리소스에 대한 전체 제어 권한을 제공합니다.
  • roles/biglake.user: 주 구성원이 테이블 데이터 읽기 및 쓰기를 포함하여 Lakehouse 리소스를 사용할 수 있도록 합니다.
  • roles/biglake.viewer: 주 구성원이 Lakehouse 리소스를 보고 테이블 데이터를 읽을 수 있도록 합니다.

권장사항

  • 최소 권한: 사용자 및 서비스 계정에 필요한 권한만 부여합니다.
  • ETag 사용: 의도하지 않은 덮어쓰기를 방지하려면 set-iam-policy을 사용할 때 항상 정책 파일에 최근 get-iam-policy 호출의 etag을 포함합니다.
  • 감사 로깅: IAM 정책의 변경사항을 추적할 수 있도록 Cloud 감사 로그가 사용 설정되어 있는지 확인합니다.
  • 버전 관리: 정책 파일을 버전 관리 시스템에 저장합니다.

카탈로그에 ACL 역할 적용

다음 섹션에서는 카탈로그에 ACL을 적용하는 방법을 보여줍니다.

gcloud

IAM 정책 가져오기

Lakehouse Iceberg 카탈로그의 현재 IAM 정책을 보려면 gcloud alpha biglake iceberg catalogs get-iam-policy 명령어를 사용합니다.

  1. IAM 정책을 가져오려면 다음 명령어를 실행합니다.

    gcloud alpha biglake iceberg catalogs get-iam-policy CATALOG_NAME \
        --project=PROJECT_ID
    

    다음을 바꿉니다.

    • CATALOG_NAME: Apache Iceberg REST 카탈로그 엔드포인트의 이름입니다.
    • PROJECT_ID: 프로젝트 ID Google Cloud
  2. 이 명령어는 현재 역할 바인딩 및 구성원을 보여주는 YAML 형식으로 IAM 정책을 출력합니다.

IAM 정책 설정

Lakehouse Iceberg 카탈로그의 IAM 정책을 업데이트하려면 gcloud alpha biglake iceberg catalogs set-iam-policy 명령어를 사용합니다. 이 명령어는 적용하려는 정책이 포함된 로컬 JSON 또는 YAML 파일을 사용합니다.

  1. JSON 또는 YAML 형식으로 로컬 정책 파일을 만듭니다. 정책 파일에는 바인딩과 etag가 포함되어야 합니다. etag 값은 변경사항이 덮어쓰이지 않도록 낙관적 동시 실행 제어를 제공합니다. 현재 etag를 가져오려면 먼저 get-iam-policy 명령어를 실행합니다.

    다음 예시는 policy.json이라는 정책 파일을 보여줍니다.

    {
      "bindings": [
        {
          "role": "roles/biglake.viewer",
          "members": [
            "user:test-user@example.com"
          ]
        },
        {
          "role": "roles/biglake.user",
          "members": [
            "user:someone@example.com"
          ]
        }
      ],
      "etag": "BwYXa9UuR8w=",
      "version": 3
    }
    
  2. 다음 명령어를 실행하여 IAM 정책을 설정합니다.

    gcloud alpha biglake iceberg catalogs set-iam-policy CATALOG_NAME POLICY_FILE \
        --project=PROJECT_ID
    

    다음을 바꿉니다.

    • CATALOG_NAME: Apache Iceberg REST 카탈로그 엔드포인트의 이름입니다.
    • POLICY_FILE: 로컬 정책 파일의 경로입니다.
    • PROJECT_ID: 프로젝트 ID입니다. Google Cloud

네임스페이스에 ACL 역할 적용

다음 섹션에서는 네임스페이스에 ACL을 적용하는 방법을 보여줍니다.

콘솔은 상속된 IAM 정책을 표시하거나 관리하지 않습니다. Google Cloud

Console

  1. 콘솔에서 Lakehouse 페이지를 엽니다. Google Cloud

    Lakehouse로 이동

  2. 기존 카탈로그를 선택하거나 카탈로그가 없는 경우 카탈로그를 만듭니다.

  3. 네임스페이스 세부정보 테이블에서 네임스페이스를 선택하고 메뉴 옵션 ()을 펼칩니다.

  4. 권한 관리 를 클릭합니다.

    권한 공유 대화상자가 표시됩니다.

  5. 주 구성원 추가 를 클릭합니다.

  6. 새 주 구성원 필드에 역할을 할당할 주 구성원 계정을 입력합니다.

  7. 역할 선택에서 주 구성원 계정에 할당할 역할을 선택합니다.

  8. 저장 을 클릭합니다.

  9. 닫기 를 클릭합니다.

gcloud

IAM 정책 가져오기

Lakehouse Iceberg 네임스페이스의 현재 IAM 정책을 보려면 gcloud alpha biglake iceberg namespaces get-iam-policy 명령어를 사용합니다.

  1. IAM 정책을 가져오려면 다음 명령어를 실행합니다.

    gcloud alpha biglake iceberg namespaces get-iam-policy NAMESPACE_NAME \
        --catalog=CATALOG_NAME \
        --project=PROJECT_ID
    

    다음을 바꿉니다.

    • NAMESPACE_NAME: 카탈로그 내 대상 네임스페이스의 이름입니다.
    • CATALOG_NAME: Apache Iceberg REST 카탈로그 엔드포인트의 이름입니다.
    • PROJECT_ID: 프로젝트 ID Google Cloud
  2. 이 명령어는 현재 역할 바인딩 및 구성원을 보여주는 YAML 형식으로 IAM 정책을 출력합니다.

IAM 정책 설정

Lakehouse Iceberg 네임스페이스의 IAM 정책을 업데이트하려면 gcloud alpha biglake iceberg namespaces set-iam-policy 명령어를 사용합니다. 이 명령어는 적용하려는 정책이 포함된 로컬 JSON 또는 YAML 파일을 사용합니다.

  1. JSON 또는 YAML 형식으로 로컬 정책 파일을 만듭니다. 정책 파일에는 바인딩과 etag가 포함되어야 합니다. etag 값은 변경사항이 덮어쓰이지 않도록 낙관적 동시 실행 제어를 제공합니다. 현재 etag를 가져오려면 먼저 get-iam-policy 명령어를 실행합니다.

    다음 예시는 policy.json이라는 정책 파일을 보여줍니다.

    {
      "bindings": [
        {
          "role": "roles/biglake.viewer",
          "members": [
            "user:test-user@example.com"
          ]
        },
        {
          "role": "roles/biglake.user",
          "members": [
            "user:someone@example.com"
          ]
        }
      ],
      "etag": "BwYXa9UuR8w=",
      "version": 3
    }
    
  2. 다음 명령어를 실행하여 IAM 정책을 설정합니다.

    gcloud alpha biglake iceberg namespaces set-iam-policy NAMESPACE_NAME POLICY_FILE \
        --catalog=CATALOG_NAME \
        --project=PROJECT_ID
    

    다음을 바꿉니다.

    • NAMESPACE_NAME: 카탈로그 내 대상 네임스페이스의 이름입니다.
    • POLICY_FILE: 로컬 정책 파일의 경로입니다.
    • CATALOG_NAME: Apache Iceberg REST 카탈로그 엔드포인트의 이름입니다.
    • PROJECT_ID: 프로젝트 ID입니다. Google Cloud

테이블에 ACL 역할 적용

다음 섹션에서는 테이블에 ACL을 적용하는 방법을 보여줍니다.

콘솔은 상속된 IAM 정책을 표시하거나 관리하지 않습니다. Google Cloud

Console

  1. 콘솔에서 Lakehouse 페이지를 엽니다. Google Cloud

    Lakehouse로 이동

  2. 기존 카탈로그를 선택하거나 카탈로그가 없는 경우 카탈로그를 만듭니다.

  3. 네임스페이스 세부정보 테이블에서 테이블이 포함된 네임스페이스의 이름을 클릭합니다.

  4. 테이블 세부정보 페이지에서 테이블을 선택하고 메뉴 옵션 ()을 펼칩니다.

  5. 권한 관리 를 클릭합니다.

    권한 공유 대화상자가 표시됩니다.

  6. 주 구성원 추가 를 클릭합니다.

  7. 새 주 구성원 필드에 역할을 할당할 주 구성원 계정을 입력합니다.

  8. 역할 선택에서 주 구성원 계정에 할당할 역할을 선택합니다.

  9. 저장 을 클릭합니다.

  10. 닫기 를 클릭합니다.

gcloud

IAM 정책 가져오기

Lakehouse Iceberg 테이블의 현재 IAM 정책을 보려면 gcloud biglake iceberg tables get-iam-policy 명령어를 사용합니다.

  1. IAM 정책을 가져오려면 다음 명령어를 실행합니다.

    gcloud biglake iceberg tables get-iam-policy TABLE_NAME \
        --catalog=CATALOG_NAME \
        --namespace=NAMESPACE_NAME \
        --project=PROJECT_ID
    

    다음을 바꿉니다.

    • TABLE_NAME: 대상 Lakehouse Iceberg 테이블의 이름입니다.
    • CATALOG_NAME: Apache Iceberg REST 카탈로그 엔드포인트의 이름입니다.
    • NAMESPACE_NAME: 카탈로그 내 네임스페이스의 이름입니다.
    • PROJECT_ID: 프로젝트 ID Google Cloud
  2. 이 명령어는 현재 역할 바인딩 및 구성원을 보여주는 YAML 형식으로 IAM 정책을 출력합니다.

IAM 정책 설정

Lakehouse Iceberg 테이블의 IAM 정책을 업데이트하려면 gcloud biglake iceberg tables set-iam-policy 명령어를 사용합니다. 이 명령어는 적용하려는 정책이 포함된 로컬 JSON 또는 YAML 파일을 사용합니다.

  1. JSON 또는 YAML 형식으로 로컬 정책 파일을 만듭니다. 정책 파일에는 바인딩과 etag가 포함되어야 합니다. etag 값은 변경사항이 덮어쓰이지 않도록 낙관적 동시 실행 제어를 제공합니다. 현재 etag를 가져오려면 먼저 get-iam-policy 명령어를 실행합니다.

    다음 예시는 policy.json이라는 정책 파일을 보여줍니다.

    {
      "bindings": [
        {
          "role": "roles/biglake.viewer",
          "members": [
            "user:test-user@example.com"
          ]
        },
        {
          "role": "roles/biglake.user",
          "members": [
            "user:someone@example.com"
          ]
        }
      ],
      "etag": "BwYXa9UuR8w=",
      "version": 3
    }
    
  2. 다음 명령어를 실행하여 IAM 정책을 설정합니다.

    gcloud biglake iceberg tables set-iam-policy TABLE_NAME POLICY_FILE \
        --catalog=CATALOG_NAME \
        --namespace=NAMESPACE_NAME \
        --project=PROJECT_ID
    

    다음을 바꿉니다.

    • TABLE_NAME: 대상 Lakehouse Iceberg 테이블의 이름입니다.
    • POLICY_FILE: 로컬 정책 파일의 경로입니다.
    • CATALOG_NAME: Apache Iceberg REST 카탈로그 엔드포인트의 이름입니다.
    • NAMESPACE_NAME: 카탈로그 내 네임스페이스의 이름입니다.
    • PROJECT_ID: 프로젝트 ID입니다. Google Cloud

다음 단계