역할 기반 액세스 제어 사용

이 페이지에서는 Cloud Data Fusion 인스턴스에서 역할 기반 액세스 제어(RBAC)를 사용해 시작하는 방법을 설명합니다. RBAC는 버전 6.5 이상에서 실행되는 Cloud Data Fusion 인스턴스에서 사용할 수 있습니다.

자세한 내용은 역할 기반 액세스 제어(RBAC) 개요를 참조하세요.

권장사항: 자동화가 필요한 것이 아니라면 Google Cloud Console을 사용하여 RBAC 작업을 수행하는 것이 좋습니다.

기존 인스턴스에 RBAC 사용 설정

인스턴스가 버전 6.5 이상에서 실행되고 있으면 기존 Cloud Data Fusion 인스턴스에 RBAC를 사용 설정할 수 있습니다.

콘솔

기존 Cloud Data Fusion 인스턴스에서 RBAC를 사용 설정하려면 다음 안내를 따르세요.

  1. Google Cloud Console에서 Cloud Data Fusion 인스턴스 페이지를 엽니다.

    인스턴스로 이동

  2. 원하는 인스턴스를 선택합니다.

    인스턴스 세부정보 페이지가 열립니다.

  3. 인스턴스가 버전 6.5 이상으로 업그레이드되었는지 확인합니다. 인스턴스가 6.5 이전 버전인 경우 인스턴스를 버전 6.5 이상으로 업그레이드합니다.

  4. RBAC 사용 설정을 클릭합니다.

  5. 저장을 클릭합니다.

  6. 인스턴스 업데이트 작업이 완료될 때까지 기다립니다.

REST API

Cloud Data Fusion Patch API를 사용하여 기존 인스턴스에 RBAC를 사용 설정할 수 있습니다. 다음 예시의 명령어를 사용해 enableRbac 플래그를 true로 설정하고 updateMask 쿼리 매개변수를 사용합니다.

export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE
export DATA_FUSION_API_NAME=datafusion.googleapis.com
alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)"'
gcurl https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances/$INSTANCE_ID?updateMask=enable_rbac -X PATCH -d '{"enable_rbac": "true"}'

기존 인스턴스의 RBAC 사용 중지

필요한 경우 RBAC가 사용 설정된 기존 인스턴스에서 RBAC를 사용 중지할 수 있습니다. RBAC를 사용 중지해도 인스턴스의 기존 파이프라인 또는 구성에는 영향을 미치지 않습니다. 네임스페이스 간 보안 격리만 사용 중지됩니다.

콘솔

기존 Cloud Data Fusion 인스턴스에서 RBAC를 사용 중지하려면 다음 안내를 따르세요.

  1. Cloud Data Fusion 인스턴스 페이지로 이동합니다.

    인스턴스로 이동

  2. 원하는 인스턴스를 선택합니다.

    인스턴스 세부정보 페이지가 열립니다.

  3. RBAC 사용 중지를 클릭합니다.

  4. 저장을 클릭합니다.

  5. 인스턴스 업데이트 작업이 완료될 때까지 기다립니다.

REST API

Cloud Data Fusion Patch API를 사용하여 기존 인스턴스에 RBAC를 사용 중지할 수 있습니다. 다음 예시의 명령어를 사용해 enableRbac 플래그를 false로 설정하고 updateMask 쿼리 매개변수를 사용합니다.

export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE
export DATA_FUSION_API_NAME=datafusion.googleapis.com
alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)"'
gcurl https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances/$INSTANCE_ID?updateMask=enable_rbac -X PATCH -d '{"enable_rbac": "false"}'

RBAC가 사용 설정된 새 인스턴스 만들기

새 Cloud Data Fusion 인스턴스에 RBAC를 추가할 수 있습니다.

콘솔

RBAC가 사용 설정된 새 Cloud Data Fusion 인스턴스를 만들려면 다음 안내를 따르세요.

  1. Cloud Data Fusion 인스턴스 페이지로 이동합니다.

    인스턴스로 이동

  2. 인스턴스 만들기를 클릭하고 인스턴스 세부정보를 입력합니다.

  3. Enterprise 버전을 선택합니다. RBAC는 Enterprise 버전에서만 지원됩니다.

  4. 고급 옵션에서 세분화된 역할 기반 액세스 제어 사용 설정을 선택합니다.

    이 기능은 Cloud Data Fusion 버전 6.5 이상을 사용하는 인스턴스에서만 사용할 수 있습니다.

  5. 만들기를 클릭합니다.

REST API

REST API를 사용하여 RBAC가 사용 설정된 인스턴스를 만들려면 다음 명령어와 같이 인스턴스 옵션에서 true로 설정된 enableRbac 플래그를 전달합니다.

export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE
export DATA_FUSION_API_NAME=datafusion.googleapis.com
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances?instanceId=$INSTANCE -X POST -d '{"description": "RBAC CDF instance created through REST", "type": "ENTERPRISE", "enableRbac": "true"}'

사용자에게 사전 정의된 Cloud Data Fusion 역할 부여(필수)

RBAC가 사용 설정된 후 인스턴스 또는 네임스페이스에서 특정 작업을 수행할 수 있도록 주 구성원에게 역할을 부여합니다. 요구사항에 가장 적합한 역할을 결정하려면 사전 정의된 Cloud Data Fusion 역할보안 권장사항을 참조하세요.

콘솔

사전 정의된 Cloud Data Fusion 역할을 주 구성원에 부여하려면 다음 안내를 따르세요.

  1. Cloud Data Fusion 권한 페이지로 이동합니다.

    권한으로 이동

  2. 추가 를 클릭합니다.

    사용자 액세스 추가 창이 열립니다.

  3. 새 구성원 필드에 역할을 부여할 주 구성원(사용자, 그룹 또는 서비스 계정 이메일) 목록을 입력합니다.

  4. 이 권한을 부여할 인스턴스마다 옆에 있는 체크박스를 선택합니다.

    인스턴스 선택

  5. 역할 열로 이동하고 원하는 인스턴스 옆에 있는 드롭다운 상자를 선택합니다.

    1. 인스턴스 관리자 권한을 부여하려면 인스턴스 관리자를 선택합니다.

    2. 네임스페이스 수준 권한을 부여하려면 네임스페이스 사용자를 선택합니다.

      네임스페이스 사용자 역할 선택

      1. 네임스페이스 수준의 권한을 부여하는 경우 선택을 클릭합니다.

        액세스 권한 추가 창이 열립니다.

      2. 네임스페이스를 선택하고 네임스페이스에 부여할 사전 정의된 Cloud Data Fusion 역할을 선택합니다.

      3. 선택을 클릭하여 새로운 설정을 저장합니다.

      4. (선택사항) 다른 인스턴스에 네임스페이스 권한을 부여하려면 5단계를 반복합니다.

  6. 저장을 클릭합니다.

    부여된 역할을 확인하려면 Google Cloud Console에서 역할 확인을 참조하세요.

gcloud

gcloud 명령줄 도구를 사용하여 프로그래매틱 방식으로 액세스를 제어할 수 있습니다.

gcloud 도구를 사용하여 역할을 부여하려면 다음과 같은 형식을 따르는 쉼표로 구분된 사용자 식별자 목록을 사용합니다.

[user|group|serviceAccount][email_address]

다음 값을 제공합니다.

  • user:useremail@example.com
  • group:groupemail@example.com
  • serviceAccount:serviceaccount@project.iam.gserviceaccount.com

더 많은 예시는 역할 부여를 참조하세요.

인스턴스 접근자 역할 부여(필수)

먼저 사용자에게 인스턴스에 대한 접근자 역할을 부여하여 인스턴스에 대한 액세스 권한을 부여해야 합니다.

  1. 다음 명령어를 사용해 다음과 같은 변수를 자체 값으로 바꿔서 내보냅니다.

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export USER_ID=EMAIL
    export USER_TYPE=USER_TYPE
    

    다음 변수를 자체 값으로 바꿉니다.

    • PROJECT_ID: 프로젝트 이름입니다.
    • INSTANCE_ID: 인스턴스의 이름
    • REGION: 프로젝트가 속한 리전입니다.
    • EMAIL: 주 구성원의 이메일 주소입니다.
    • USER_TYPE: 사용자 유형은 user, group 또는 serviceAccount 중 하나일 수 있습니다.
  2. 다음 명령어를 실행하여 역할을 할당합니다.

    gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --member="${USER_TYPE}:${USER_ID}" --role="roles/datafusion.accessor"
    

네임스페이스에 역할 부여(사용 사례에 따라 다름)

사용 사례에 따라 다음 명령어를 사용하여 역할을 부여합니다.

  1. 다음 명령어를 사용해 다음과 같은 변수를 자체 값으로 바꿔서 내보냅니다.

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export NAMESPACE=NAMESPACE
    export USER_ID=EMAIL
    export USER_TYPE=USER_TYPE
    

    다음 변수를 자체 값으로 바꿉니다.

    • PROJECT_ID: 프로젝트 이름입니다.
    • INSTANCE_ID: 인스턴스의 이름
    • REGION: 프로젝트가 속한 리전입니다.
    • NAMESPACE: 네임스페이스 이름입니다.
    • EMAIL: 주 구성원의 이메일 주소입니다.
    • USER_TYPE: 사용자 유형은 user, group 또는 serviceAccount 중 하나일 수 있습니다.
  2. 다음 명령어를 실행하여 특정 네임스페이스의 주 구성원에게 역할을 할당합니다.

    gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE} --member="${USER_TYPE}:${USER_ID}" --role="roles/ROLE_NAME"
    

    ROLE_NAME을 다음 값 중 하나로 바꿉니다.

    • 네임스페이스의 편집자 역할에는 datafusion.editor를 사용합니다.
    • 네임스페이스의 운영자 역할에는 datafusion.operator를 사용합니다.
    • 네임스페이스의 개발자 역할에는 datafusion.developer를 사용합니다.
    • 네임스페이스의 뷰어 역할에는 datafusion.viewer를 사용합니다.

네임스페이스 역할 취소(선택사항)

특정 네임스페이스에서 사용자에게 부여한 역할을 취소하려면 다음 명령어를 사용합니다.

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
export USER_ID=EMAIL
# User type can be one of: user, group, or serviceAccount.
export USER_TYPE=USER_TYPE
export ROLE=ROLE_NAME
gcloud beta data-fusion remove-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE} --member="${USER_TYPE}:${USER_ID}" --role="${ROLE}"

특정 네임스페이스에 부여된 역할 나열(선택사항)

다음 명령어를 사용하여 IAM 정책을 가져오면 특정 네임스페이스에 부여된 모든 역할을 나열할 수 있습니다.

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE}

REST API

인스턴스 접근자 역할 부여(필수)

먼저 사용자에게 인스턴스에 대한 접근자 역할을 부여하여 인스턴스에 대한 액세스 권한을 부여해야 합니다.

권장사항: 대신 gcloud 도구를 사용하여 접근자 역할을 부여하세요.

  1. 인스턴스에 접근자 역할을 부여합니다.

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export USER_ID=EMAIL
    # User type can be one of: user, group, or serviceAccount.
    export USER_TYPE=USER_TYPE
    alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)"'
    
  2. 현재 IAM 정책을 가져와서 파일에 저장합니다.

    gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE_ID}:getIamPolicy > iam_policy.json
    
  3. 정책에서 역할과 사용자에 대한 binding을 추가합니다. 예를 들면 다음과 같습니다.

    {
      "policy": {
        "bindings": [
          {
            "role": "roles/datafusion.accessor",
            "members": [
              "${USER_TYPE}:${USER_ID}"
            ]
          }
        ]
      }
    }
    gcurl
      -d @iam_policy.json \
      https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE_ID}:setIamPolicy
    

네임스페이스에 역할 부여(사용 사례에 따라 다름)

사용 사례에 따라 다음 명령어를 사용하여 역할을 부여합니다.

  1. 다음 명령어를 사용해 다음과 같은 변수를 자체 값으로 바꿔서 내보냅니다.

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export NAMESPACE=NAMESPACE
    export USER_ID=EMAIL
    export USER_TYPE=USER_TYPE
    alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)"'
    

    다음 변수를 자체 값으로 바꿉니다.

    • PROJECT_ID: 프로젝트 이름입니다.
    • INSTANCE_ID: 인스턴스의 이름
    • REGION: 프로젝트가 속한 리전입니다.
    • NAMESPACE: 네임스페이스 이름입니다.
    • EMAIL: 주 구성원의 이메일 주소입니다.
    • USER_TYPE: 사용자 유형은 user, group 또는 serviceAccount 중 하나일 수 있습니다.
  2. 현재 IAM 정책을 가져와서 파일에 저장합니다.

      gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy > iam_policy.json
      ```
    
    Replace iam_policy.json with your own file name.
    
  3. 정책 파일에서 역할과 사용자에 대한 binding을 추가합니다. 예를 들어 정책 파일은 다음과 같이 표시됩니다.

    {
      "policy": {
        "bindings": [
          {
            "role": "roles/ROLE_NAME",
              "members": [
              "${USER_TYPE}:${USER_ID}"
            ]
          }
        ]
      }
    }
    

특정 정책에서 여러 개의 역할 결합을 지정할 수 있으며, 특정 역할 결합의 구성원 목록에서 여러 주 구성원을 지정할 수 있습니다. 특정 주 구성원의 ROLE_NAME을 다음 값 중 하나로 바꿉니다.

  • 네임스페이스의 편집자 역할에는 datafusion.editor를 사용합니다.
  • 네임스페이스의 운영자 역할에는 datafusion.operator를 사용합니다.
  • 네임스페이스의 개발자 역할에는 datafusion.developer를 사용합니다.
  • 네임스페이스의 뷰어 역할에는 datafusion.viewer를 사용합니다.
  1. 다음 명령어를 실행하여 정책 파일을 업데이트합니다.

    gcurl -d @iam_policy.json \
    https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE_ID}:setIamPolicy
    

    iam_policy.json을 자체 파일 이름으로 바꿉니다.

Google Cloud Console에서 역할 확인

Cloud Data Fusion 권한 페이지에서 기존 역할을 검토하고 수정할 수 있습니다.

권한으로 이동

정책 파일을 사용한 역할 확인

gcloud 도구 또는 REST API를 사용하여 IAM 정책 파일에서 올바른 사용자에게 역할이 부여되었는지 확인할 수 있습니다.

다음 IAM 정책 파일 예시에서는 alice@example.com 사용자에게 Data Fusion 개발자 역할이 부여되었습니다.

bindings:
- members:
  - user:alice@example.com
  role: roles/datafusion.developer
- members:
  - user:bob@example.com
  - serviceAccount:myserviceaccount@myproject.iam.gserviceaccount.com
  role: roles/datafusion.operator
- members:
  - user:james@example.com
  - user:mike@example.com
  - group:mygroup@googlegroups.com
  role: roles/datafusion.editor
etag: BwXA8BAHYmw=

인스턴스의 IAM 정책 가져오기

gcloud

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION}

cURL

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
curl -H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy

네임스페이스의 IAM 정책 가져오기

gcloud

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE}

cURL

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export NAMESPACE=NAMESPACE
export REGION=REGION
curl -H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/${NAMESPACE}:getIamPolicy

다음 단계