IAM으로 개별 테이블에 대한 액세스 제어

이 문서에서는 개별 Dataform 테이블과 뷰에 대한 BigQuery Identity and Access Management(IAM) 역할을 부여하고 취소하는 방법을 설명합니다.

Dataform 및 BigQuery는 액세스 제어에 IAM을 사용합니다. IAM의 Dataform 역할과 권한에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.

Dataform은 테이블이나 뷰를 실행할 때 BigQuery에서 리소스를 만듭니다. Dataform에서 개발하는 동안 개별 테이블과 뷰에 BigQuery 역할을 부여하여 실행 후 BigQuery에서 액세스를 제어할 수 있습니다.

리소스에 대한 액세스 권한 부여 및 취소에 대한 자세한 내용은 리소스에 대한 액세스 권한 부여를 참조하세요.

시작하기 전에

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery and Dataform APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery and Dataform APIs.

    Enable the APIs

테이블이나 뷰에 BigQuery 역할 부여

선택한 테이블 또는 뷰의 .sqlx 정의 파일에 GRANT DCL 문이 있는 post_operations 블록을 추가하여 Dataform에서 테이블 또는 뷰에 BigQuery 역할을 부여할 수 있습니다.

선택한 테이블이나 뷰에 BigQuery 역할을 부여하려면 다음 단계를 수행합니다.

  1. Google Cloud 콘솔에서 Dataform 페이지로 이동합니다.

    Dataform 페이지로 이동

  2. 저장소를 선택한 후 작업공간을 선택합니다.

  3. 파일 창에서 definitions/ 디렉터리를 펼칩니다.

  4. 액세스 권한을 부여하려는 테이블이나 뷰의 .sqlx 정의 파일을 선택합니다.

  5. 파일에 다음 코드 스니펫을 입력합니다.

    post_operations {
        GRANT "ROLE_LIST"
        ON "RESOURCE_TYPE" ${self()}
        TO "USER_LIST"
    }
    

    다음을 바꿉니다.

    • ROLE_LIST: 부여하려는 BigQuery 역할 또는 쉼표로 구분된 BigQuery 역할 목록

    • RESOURCE_TYPE: TABLE 또는 VIEW

    • USER_LIST: 역할이 부여된 사용자를 쉼표로 구분한 목록

      유효한 형식 목록은 user_list를 참조하세요.

  6. (선택사항): 형식을 클릭합니다.

  7. 테이블 또는 뷰를 실행합니다.

  8. 증분 테이블에 대한 액세스 권한을 부여한 경우 첫 실행 후 테이블 정의 파일에서 GRANT 문을 삭제하세요.

다음 코드 샘플에서는 사용자에게 부여된 테이블에 대한 BigQuery 뷰어 역할을 보여줍니다.

config { type: "table" }

SELECT ...

post_operations {
  GRANT `roles/bigquery.dataViewer`
  ON TABLE ${self()}
  TO "user:222larabrown@gmail.com"
}

테이블이나 뷰에서 BigQuery 역할 취소

REVOKE DCL 문이 있는 post_operations 블록을 테이블 또는 뷰의 .sqlx 정의 파일에 추가하여 테이블 또는 뷰에서 BigQuery 역할을 취소할 수 있습니다.

선택한 테이블이나 뷰에서 BigQuery 역할을 취소하려면 다음 단계를 수행합니다.

  1. Google Cloud 콘솔에서 Dataform 페이지로 이동합니다.

    Dataform 페이지로 이동

  2. 저장소를 선택한 후 작업공간을 선택합니다.

  3. 파일 창에서 definitions/ 디렉터리를 펼칩니다.

  4. 액세스 권한을 취소하려는 테이블이나 뷰의 .sqlx 정의 파일을 선택합니다.

  5. post_operations 블록에 다음 REVOKE 문을 입력합니다.

        REVOKE "ROLE_LIST"
        ON "RESOURCE_TYPE" ${self()}
        TO "USER_LIST"
    

    다음을 바꿉니다.

    • ROLE_LIST: 취소하려는 BigQuery 역할 또는 쉼표로 구분된 BigQuery 역할 목록
    • RESOURCE_TYPE: TABLE 또는 VIEW
    • USER_LIST: 역할을 취소할 사용자를 쉼표로 구분한 목록. 유효한 형식 목록은 user_list를 참조하세요.
  6. 파일의 GRANT 문에서 부여된 액세스 권한을 취소하려면 GRANT 문을 REVOKE 문으로 바꿉니다.

  7. (선택사항): 형식을 클릭합니다.

  8. 테이블 또는 뷰를 실행합니다.

  9. 증분 테이블에 대한 액세스 권한을 취소한 경우 첫 실행 후 테이블 정의 파일에서 REVOKE 문을 삭제하세요.

다음 코드 샘플에서는 사용자가 취소한 테이블에 대한 BigQuery 뷰어 역할을 보여줍니다.

config { type: "table" }

SELECT ...

post_operations {
  REVOKE `roles/bigquery.dataViewer`
  ON TABLE ${self()}
  FROM "user:222larabrown@gmail.com"
}

테이블과 뷰의 BigQuery 역할 일괄 관리

단일 위치에서 개별 테이블 및 뷰에 대한 BigQuery 액세스를 제어하려면 GRANTREVOKE DCL 문으로 전용 type: "operations" 파일을 생성할 수 있습니다.

단일 type: "operations" 파일에서 BigQuery 테이블 액세스를 관리하려면 다음 단계를 수행합니다.

  1. Google Cloud 콘솔에서 Dataform 페이지로 이동합니다.

    Dataform 페이지로 이동

  2. 저장소를 선택한 후 작업공간을 선택합니다.

  3. 파일 창에서 definitions/ 옆에 있는 더보기 메뉴를 클릭합니다.

  4. 파일 만들기를 클릭합니다.

  5. 파일 경로 추가 필드에 definitions/를 입력하고 파일 이름 다음에 .sqlx를 입력합니다. 예를 들면 definitions/table-access.sqlx입니다.

    파일 이름에는 숫자, 문자, 하이픈, 밑줄만 포함할 수 있습니다.

  6. 파일 만들기를 클릭합니다.

  7. 파일 창에서 definitions/ 디렉터리를 펼치고 새로 만든 파일을 선택합니다.

  8. 파일에 다음 코드 스니펫을 입력합니다.

      config { type: "operations" }
    
      GRANT "ROLE_LIST"
      ON RESOURCE_TYPE RESOURCE_NAME
      TO "USER_LIST"
    
      REVOKE "ROLE_LIST"
      ON { "<var>" }}RESOURCE_TYPE RESOURCE_NAME
      TO "USER_LIST"
    

    다음을 바꿉니다.

    • ROLE_LIST: 부여하거나 취소할 BigQuery 역할 또는 쉼표로 구분된 BigQuery 역할 목록
    • RESOURCE_TYPE: TABLE 또는 VIEW
    • RESOURCE_NAME: 테이블 또는 뷰의 이름
    • USER_LIST: 역할을 부여하거나 취소할 사용자 목록을 쉼표로 구분한 목록. 유효한 형식 목록은 user_list를 참조하세요.
  9. 필요에 따라 GRANTREVOKE 문을 추가합니다.

    1. 파일의 GRANT 문에서 부여된 액세스 권한을 취소하려면 GRANT 문을 REVOKE 문으로 바꿉니다.

      REVOKE 문을 추가하지 않고 GRANT 문을 삭제하면 액세스 권한이 취소되지 않습니다.

  10. (선택사항): 형식을 클릭합니다.

  11. 각 업데이트 후에 파일을 실행합니다.

    1. 증분 테이블에 대한 액세스 권한을 부여하거나 취소한 경우 문을 처음 실행한 후 파일에서 GRANT 또는 REVOKE 문을 삭제하세요.

다음 단계