Snowflake Open Catalog에서 키 페어 인증 구성¶
이 항목에서는 Snowflake Open Catalog에서 키 페어 인증을 구성하는 방법을 설명합니다. 이 구성을 사용하면 키 페어 인증 사용자가 액세스 토큰을 통해 프로그래밍 방식으로 Open Catalog에 연결할 수 있습니다. 간결성을 위해 별도로 명시하지 않는 한, 이 항목의 나머지 부분에서는 ‘사용자’가 키 페어 인증 사용자를 나타냅니다.
키 페어 인증을 사용하면 적절한 카탈로그에 대한 권한이 있는 다양한 사용자 지정 역할로 사용자가 Open Catalog에 프로그래밍 방식으로 액세스하도록 허용할 수 있습니다. 예:
ANALYST 사용자 지정 역할: catalogA에만 액세스할 수 있습니다.
ENGINEER 사용자 지정 역할: catalogB에만 액세스할 수 있습니다.
전제 조건¶
Open Catalog 계정에서 카탈로그를 만듭니다.
Snowflake CLI가 컴퓨터에 설치되어 있어야 합니다. 또한 Open Catalog에 대한 Snowflake CLI 연결을 생성해야 합니다. 이 연결을 만들려면 아래의 Open Catalog에 대한 Snowflake CLI 연결 만들기를 참조하세요.
키 페어 인증을 구성하려면 Open Catalog에 대한 서비스 관리자 역할이 있어야 합니다. 자세한 내용은 사용자 역할을 참조하세요. Snowflake CLI에서 이 역할은 POLARIS_ACCOUNT_ADMIN으로 출력됩니다.
컴퓨터에 SnowSQL이 설치되어 있어야 합니다.
서비스 관리자 액세스 토큰이 필요합니다. 프로그래밍 방식으로 키 페어 인증을 구성하려면 이 토큰이 필요하며 사용자에게 카탈로그 관리자 권한을 부여해야 합니다. 이 토큰을 생성하려면 아래의 서비스 관리자 액세스 토큰 생성을 참조하세요.
시작하기 전에¶
키 페어 인증을 구성하려면 Open Catalog에 대한 Snowflake CLI 연결이 필요합니다.
이 연결을 만들려면 전체 Open Catalog 계정 식별자가 필요합니다. 여기에는 Snowflake 조직 이름과 Open Catalog 계정 이름이 포함됩니다(예: <orgname>.<my-snowflake-open-catalog-account-name>).
Snowflake 조직 이름(
<orgname>)을 찾으려면 :ref:label-account_name_find섹션을 참조하세요.Snowflake Open Catalog 계정 이름(
<my-snowflake-open-catalog-account-name>)을 확인하려면 :doc:/user-guide/opencatalog/find-account-name섹션을 참조하세요.
Open Catalog용 Snowflake CLI 연결 생성¶
계정에 대한 키 페어 인증을 구성하는 데 사용할 수 있도록 Open Catalog 계정에 대한 Snowflake CLI 연결을 만듭니다.
1단계: Snowflake Open Catalog용 Snowflake CLI 연결 추가¶
키 페어 인증을 구성하려는 Snowflake Open Catalog 계정에 대한 연결을 추가합니다.
다음 값을 사용하여 :ref:
연결을 추가<label-snowcli_snow_connection_command_add>하세요. 다른 모든 매개 변수의 경우 kbd:Enter키를 눌러 매개 변수의 값 지정을 건너뜁니다.연결 구성 매개 변수
값
이 연결의 이름
연결에 대한 이름을 지정합니다(예:
myopencatalogconnection).계정 이름
다음 형식으로 Snowflake 조직 이름을 지정한 후 Open Catalog 계정 이름을 입력합니다.
<orgname>-<my-snowflake-open-catalog-account-name>.예:
ABCDEFG-MYACCOUNT1.이 이름들을 찾으려면
시작하기 전에_ 섹션을 참조하세요.사용자 이름
Open Catalog용 사용자 이름을 지정합니다(예:
jsmith).비밀번호[선택 사항]
Open Catalog 연결을 생성할 때 이 매개 변수는 선택 사항이 아닙니다.
Open Catalog의 비밀번호를 입력합니다(예:
MyPassword123456789).연결의 역할[선택 사항]
Open Catalog 연결을 생성할 때 이 매개 변수는 선택 사항이 아닙니다.
POLARIS_ACCOUNT_ADMIN을 반드시 입력해야 합니다.
2단계: Snowflake CLI 연결 테스트¶
CLI 연결을 테스트하려면 다음 예시를 따라
myopencatalogconnection의 연결을 테스트하세요.snow connection test -c myopencatalogconnection
응답은 다음과 같아야 합니다.
+------------------------------------------------------------------------------+ | key | value | |----------------------------+-------------------------------------------------| | Connection name | myopencatalogconnection | | Status | OK | | Host | ABCDEFG-MYACCOUNT1.snowflakecomputing.com | | Account | ABCDEFG-MYACCOUNT1 | | User | jsmith | | Role | POLARIS_ACCOUNT_ADMIN | | Database | not set | | Warehouse | not set | +------------------------------------------------------------------------------+
3단계: 기본 Snowflake CLI 연결 설정¶
사용 중인 연결에 항상 필요한 POLARIS_ACCOUNT_ADMIN 역할이 부여되도록 하려면, Open Catalog용으로 생성한 Snowflake CLI 연결을 기본 연결로 설정할 수 있습니다. 기본 연결에 대한 자세한 내용은 :ref:label-cli_set_default_connection 섹션을 참조하세요.
다음 예시를 따라
myopencatalogconnection연결을 기본값으로 설정합니다.snow connection set-default myopencatalogconnection
올바른 사용자 및 역할을 사용하고 있는지 확인하려면 다음을 실행합니다.
snow sql -q "Select current_user(); select current_role();"
응답은 귀하의 Open Catalog 사용자 이름을 반환해야 하며, CURRENT ROLE은 POLARIS_ACCOUNT_ADMIN이어야 합니다.
+----------------+ | CURRENT_USER() | |----------------| | JSMITH | +----------------+ select current_role(); +-----------------------+ | CURRENT_ROLE() | |-----------------------| | POLARIS_ACCOUNT_ADMIN | +-----------------------+
서비스 관리자 액세스 토큰 생성¶
프로그래밍 방식으로 키 페어 인증을 구성하려면 서비스 관리자 액세스 토큰이 필요합니다. 그러나 Open Catalog UI를 사용하여 키 페어 인증을 구성하기 위한 몇 가지 작업을 수행할 수 있습니다.
이미 서비스 관리자 액세스 토큰을 직접 생성했고 해당 토큰이 여전히 활성 상태인 경우 이 단계를 건너뛸 수 있습니다.
서비스 관리자 액세스 토큰을 생성하는 단계는 다음과 같습니다.
개인 및 공개 키 생성¶
이 섹션에서는 개인 키와 공개 키를 생성하는 방법을 설명합니다.
개인 키를 생성하려면 다음 명령을 사용합니다.
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
공개 키를 생성하려면 다음 명령을 사용합니다.
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
자신에게 공개 키 할당¶
Snowflake CLI 연결을 사용하여 자신에게 공개 키를 할당합니다.
참고
설정한 기본 Snowflake CLI 연결에 POLARIS_ACCOUNT_ADMIN 역할이 부여되지 않은 경우, USE ROLE POLARIS_ACCOUNT_ADMIN 문을 명령에 포함해야 합니다.
자신에게 공개 키를 할당하려면 다음을 실행합니다.
snow sql -q "alter user <your_username> set RSA_PUBLIC_KEY='<your_public_key>';"
여기서
<your_username>은 Open Catalog UI에 로그인하는 데 사용하는 Open Catalog 사용자 이름입니다.
참고
공개 키를 검색해야 하는 경우
cat rsa_key.pub을 실행합니다.사용자의 공개 키(
RSA_PUBLIC_KEY) 및 사용자 RSA 공개 키(RSA_PUBLIC_KEY_FP)의 지문이 설정되었는지 확인합니다.snow sql -q "desc user <your_username>;"
여기서
<your_username>은 Open Catalog UI에 로그인하는 데 사용하는 Open Catalog 사용자 이름입니다.
JSON 웹 토큰 생성¶
이 섹션에서는 액세스 토큰 생성을 위해 필요한 JWT(JSON 웹 토큰)를 생성합니다.
SnowSQL을 사용하여 JWT를 생성하려면 다음을 실행합니다.
snowsql --private-key-path rsa_key.p8 --generate-jwt -h <your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com -a <account-identifier> -u <your_user_name>
여기서
<your_org_name>-<your_open_catalogaccount_name>은 하이픈으로 구분된 조직 이름과 Snowflake Open Catalog 계정 이름입니다.예를 들어
ABCDEFG-MYACCOUNT1과 같습니다.이러한 값을 이 형식으로 가져오려면 조직 및 계정 이름 가져오기를 참조하세요.
<account-identifier>는 Snowflake Open Catalog 계정의 계정 식별자입니다. 이 식별자를 가져오려면 Open Catalog 계정 URL을 참조합니다(예: https://app.snowflake.com/us-west-2/abc12345/#/의 abc12345).<your_user_name>은 Open Catalog 사용자 이름입니다.
암호화한 경우 패스를 입력하거나 계속하려면 Enter 키를 선택합니다. JWT를 수신하는 데 몇 초 정도 걸릴 수 있습니다.
서비스 관리자 액세스 토큰 생성¶
이 섹션에서는 프로그래밍 방식으로 키 페어 인증을 구성하는 데 사용하는 서비스 관리자 액세스 토큰을 생성합니다.
서비스 관리자 액세스 토큰을 생성하려면 다음 명령을 실행하고 값을 텍스트 편집기에 복사합니다.
curl -i -X POST \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Accept: application/json" \ --data-urlencode "scope=session:role:POLARIS_ACCOUNT_ADMIN" \ --data-urlencode "grant_type=client_credentials" \ --data-urlencode "client_secret=<your_JWT>" \ "https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/catalog/v1/oauth/tokens"
여기서
POLARIS_ACCOUNT_ADMIN은 Open Catalog에서 키 페어 인증 구성을 포함하는 관리 작업을 수행할 수 있는 Open Catalog의 기본 제공 역할 이름입니다. Open Catalog UI에서는 이 역할을 서비스 관리자 역할이라고 합니다.<your_JWT>는 이전 단계에서 생성한 JWT입니다.<your_org_name>-<your_open_catalogaccount_name>은 하이픈으로 구분된 조직 이름과 Snowflake Open Catalog 계정 이름입니다.예를 들어
ABCDEFG-MYACCOUNT1과 같습니다.이러한 값을 이 형식으로 가져오려면 조직 및 계정 이름 가져오기를 참조하세요.
1단계: 사용자 지정 역할 만들기¶
이 단계에서는 Snowflake CLI 연결을 사용하여 사용자 지정 역할을 만듭니다.
사용자 지정 역할을 생성하여 나중에 카탈로그 역할을 부여하고 특정 사용자에게 이 사용자 지정 역할을 부여하면 해당 사용자에게 권한이 부여됩니다. 사용자 지정 역할에 대한 자세한 내용은 사용자 지정 역할을 참조하세요. Open Catalog의 RBAC 모델에 대한 자세한 내용은 RBAC 모델을 참조하세요.
참고
설정한 기본 Snowflake CLI 연결에 POLARIS_ACCOUNT_ADMIN 역할이 부여되지 않은 경우, USE ROLE POLARIS_ACCOUNT_ADMIN 문을 명령에 포함해야 합니다.
다음 예에서는 OPEN_CATALOG_ADMIN 사용자 지정 역할을 만듭니다.
snow sql -q "create role OPEN_CATALOG_ADMIN;"
2단계: 조직 및 계정 이름 가져오기¶
JWT 또는 액세스 토큰 생성과 같은 작업을 위해서는 하이픈으로 구분된 조직 이름과 Snowflake Open Catalog 계정 이름이 필요합니다.
이 형식으로 조직 이름과 Snowflake Open Catalog 계정 이름을 가져오려면 다음 명령을 실행합니다.
snow sql -q "SELECT CURRENT_ORGANIZATION_NAME() || '-' || CURRENT_ACCOUNT_NAME();"
응답에서 반환된 값을 복사하여 나중에 사용할 수 있도록 텍스트 편집기에 붙여넣습니다. 예를 들어
ABCDEFG-MYACCOUNT1과 같습니다.
3단계: 사용자 지정 역할에 카탈로그 역할 부여¶
이 섹션에서는 생성한 사용자 지정 역할에 카탈로그 역할을 부여합니다.
사용자 지정 역할에 카탈로그 역할을 부여한 후 특정 사용자에게 이 사용자 지정 역할을 부여하여 주체 역할에 부여한 카탈로그 역할에 부여된 모든 권한을 해당 사용자에게 부여합니다. Open Catalog의 RBAC 모델에 대한 자세한 내용은 RBAC 모델을 참조하세요.
카탈로그에 대한 카탈로그 관리자 권한이 있거나 지정한 카탈로그에 대한 권한 세트가 있는 카탈로그 역할을 사용자 지정 역할에 부여할 수 있습니다.
카탈로그에 대한 카탈로그 관리자 권한을 사용자에게 부여하려면 사용자 지정 역할에 카탈로그 관리자 권한이 있는 카탈로그 역할을 부여합니다. 카탈로그 관리자에게 있는 권한에 대한 자세한 내용은 카탈로그 관리자 역할을 참조하세요.
지정한 권한 세트를 사용자에게 부여하려면 사용자 지정 역할에 지정한 권한 세트가 있는 카탈로그 역할을 부여합니다. 예를 들어, 사용자 지정 역할에 cataLog_reader, catalog_writer 또는 catalog_metadata_reader 카탈로그 역할을 부여하려면 이 옵션을 선택합니다.
사용자 지정 역할에 카탈로그 관리자 권한이 있는 카탈로그 역할 부여¶
이 섹션에서는 사용자 지정 역할에 카탈로그 관리자 권한이 있는 카탈로그 역할을 부여합니다. 워크플로는 다음과 같습니다.
카탈로그 역할 만들기¶
다음 명령을 실행하여 지정한 카탈로그에 카탈로그 역할을 생성합니다.
curl -X POST \ "https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/catalogs/{catalogName}/catalog-roles" \ -H "Authorization: Bearer <service_admin_access_token>" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "name": "<catalog_role_name>" }'
- 여기서
<your_org_name>-<your_open_catalogaccount_name>은 하이픈으로 구분된 조직 이름과 Snowflake Open Catalog 계정 이름입니다.예를 들어
ABCDEFG-MYACCOUNT1과 같습니다.이 형식으로 이러한 값을 가져오려면 :ref:
label-retrieve_org_account_name_key_pair_auth섹션을 참조하세요.
{Catalogname}은 카탈로그 역할을 만들려는 Open Catalog의 카탈로그 이름입니다.
<service_admin_access_token>은 :ref:생성한 서비스 관리자 액세스 토큰<label-generate_service_admin_access_token_key_pair_auth>입니다.
<catalog_role_name>의 경우 카탈로그 역할의 이름을 지정합니다. 예를 들어 CatalogAdmin 과 같습니다.
Snowflake Labs의 카탈로그<https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#catalog-1>_를 참조하세요.
See See 카탈로그 역할 만들기.
카탈로그 역할에 카탈로그 관리자 권한 부여¶
다음 명령을 실행합니다.
curl -X PUT \ "https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/catalogs/{catalogName}/catalog-roles/{catalogRoleName}/grants" \ -H "Authorization: Bearer <service_admin_access_token>" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"grant": {"type": "catalog", "privilege": "CATALOG_MANAGE_CONTENT"}}'
- 여기서
<your_org_name>-<your_open_catalogaccount_name>은 하이픈으로 구분된 조직 이름과 Snowflake Open Catalog 계정 이름입니다.예를 들어
ABCDEFG-MYACCOUNT1과 같습니다.이 형식으로 이러한 값을 가져오려면 :ref:
label-retrieve_org_account_name_key_pair_auth섹션을 참조하세요.
{Catalogname}은 권한을 부여하려는 Open Catalog의 카탈로그 이름입니다.
{catalogRoleName}은 권한을 부여하려는 카탈로그 역할의 이름입니다. 예: TableReader.
<service_admin_access_token>은 :ref:생성한 서비스 관리자 액세스 토큰<label-generate_service_admin_access_token_key_pair_auth>입니다.
CATALOG_MANAGE_CONTENT은 카탈로그 관리자 권한이 있는 Open Catalog의 권한 이름입니다.
Snowflake Labs의 권한<https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#privileges>_을 참조하세요. 지침에 설명된 대로 카탈로그 역할에 CATALOG_MANAGE_CONTENT 권한을 부여해야 합니다.
See Grant catalog privileges on a catalog role and select the
CATALOG_MANAGE_CONTENT privilege.
사용자 지정 역할에 카탈로그 역할 부여¶
중요
사용자 지정 역할은 대소문자를 구분합니다. 소문자로 또는 소문자와 대문자로 생성한 경우에도 모든 대문자로 사용자 지정 역할을 지정해야 합니다.
다음 명령을 실행합니다.
curl -X PUT \ "https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/principal-roles/{customRoleName}/catalog-roles/{catalogName}" \ -H "Authorization: Bearer <service_admin_access_token>" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"catalogRole": {"name": "<catalog_role_name>", "properties": {}, "entityVersion": 1}}'
- 여기서
<your_org_name>-<your_open_catalogaccount_name>은 하이픈으로 구분된 조직 이름과 Snowflake Open Catalog 계정 이름입니다.예를 들어
ABCDEFG-MYACCOUNT1과 같습니다.이 형식으로 이러한 값을 가져오려면 :ref:
label-retrieve_org_account_name_key_pair_auth섹션을 참조하세요.
{customRoleName}은 카탈로그 관리자 권한이 있는 카탈로그 역할을 부여할 사용자 지정 역할의 이름입니다. 예: OPEN_CATALOG_ADMIN.
{catalogName}은 카탈로그 관리자 권한을 부여하려는 Open Catalog의 카탈로그 이름입니다.
<catalog_role_name>은 카탈로그 관리자 권한이 부여된 카탈로그에 대한 카탈로그 역할의 이름입니다. 예를 들면 CatalogAdmin과 같습니다.
<service_admin_access_token>은 :ref:생성한 서비스 관리자 액세스 토큰<label-generate_service_admin_access_token_key_pair_auth>입니다.
Snowflake Labs에서 권한 부여<https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#grants>_를 참조하세요.
See 보안 카탈로그. These
instructions describe how to grant a catalog role to a principal role but the process is the same. Instead of selecting a principal
role from the list, select your custom role that you want to grant with the catalog role that has the CATALOG_MANAGE_CONTENT privilege.
필요한 경우 이 단계를 반복하여 사용자 지정 역할에 다른 카탈로그에 대한 카탈로그 관리자 권한을 부여합니다.
사용자 지정 역할에 지정한 권한 세트가 있는 카탈로그 역할 부여¶
워크플로는 다음과 같습니다.
카탈로그 역할에 권한 부여. 이러한 권한을 통해 사용자는 Open Catalog에서 작업을 수행할 수 있습니다.
카탈로그 역할 만들기¶
이 섹션에서는 카탈로그 역할을 만듭니다. 카탈로그 역할에 대한 자세한 내용은 카탈로그 역할 섹션을 참조하십시오.
다음 명령을 실행하여 지정한 카탈로그에 카탈로그 역할을 생성합니다.
curl -X POST \ "https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/catalogs/{catalogName}/catalog-roles" \ -H "Authorization: Bearer <service_admin_access_token>" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "name": "<catalog_role_name>" }'
- 여기서
<your_org_name>-<your_open_catalogaccount_name>은 하이픈으로 구분된 조직 이름과 Snowflake Open Catalog 계정 이름입니다.예를 들어
ABCDEFG-MYACCOUNT1과 같습니다.이 형식으로 이러한 값을 가져오려면 :ref:
label-retrieve_org_account_name_key_pair_auth섹션을 참조하세요.
{Catalogname}은 카탈로그 역할을 만들려는 Open Catalog의 카탈로그 이름입니다.
<service_admin_access_token>은 :ref:생성한 서비스 관리자 액세스 토큰<label-generate_service_admin_access_token_key_pair_auth>입니다.
<catalog_role_name>의 경우 카탈로그 역할의 이름을 지정합니다. 예를 들어 TableReader 과 같습니다.
Snowflake Labs의 카탈로그<https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#catalog-1>_를 참조하세요.
See See 카탈로그 역할 만들기.
카탈로그 역할에 권한 부여¶
전체 카탈로그 또는 카탈로그의 네임스페이스나 테이블에 권한을 부여할 수 있습니다.
카탈로그 역할에 카탈로그 권한 부여¶
다음 명령을 실행합니다.
curl -X PUT \ "https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/catalogs/{catalogName}/catalog-roles/{catalogRoleName}/grants" \ -H "Authorization: Bearer <service_admin_access_token>" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"grant": {"type": "catalog", "privilege": "<privilege_name>"}}'
- 여기서
<your_org_name>-<your_open_catalogaccount_name>은 하이픈으로 구분된 조직 이름과 Snowflake Open Catalog 계정 이름입니다.예를 들어
ABCDEFG-MYACCOUNT1과 같습니다.이 형식으로 이러한 값을 가져오려면 :ref:
label-retrieve_org_account_name_key_pair_auth섹션을 참조하세요.
{Catalogname}은 권한을 부여하려는 Open Catalog의 카탈로그 이름입니다.
{catalogRoleName}은 권한을 부여하려는 카탈로그 역할의 이름입니다. 예: TableReader.
<service_admin_access_token>은 :ref:생성한 서비스 관리자 액세스 토큰<label-generate_service_admin_access_token_key_pair_auth>입니다.
<privilege_name>은 카탈로그 역할에 부여하려는 권한의 이름입니다. 사용 가능한 권한 목록은액세스 제어 권한<https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_을 참조하세요.
Snowflake Labs의 권한<https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#privileges>_을 참조하세요.
참고
Snowflake Labs의 예에서는 카탈로그에 대한 카탈로그 관리자 권한을 부여하는 CATALOG_MANAGE_CONTENT 권한을 부여합니다. 사용 가능한 다른 권한 목록은 Open Catalog 설명서의 액세스 제어 권한<https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_을 참조하세요.
카탈로그 역할에 네임스페이스 권한 부여¶
다음 명령을 실행합니다.
curl -X PUT \ "https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/catalogs/{catalogName}/catalog-roles/{catalogRoleName}/grants" \ -H "Authorization: Bearer <service_admin_access_token>" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"grant": {"type": "namespace", "namespace": ["<namespace_name>"], "privilege": "<privilege_name>"}}'
- 여기서
<your_org_name>-<your_open_catalogaccount_name>은 하이픈으로 구분된 조직 이름과 Snowflake Open Catalog 계정 이름입니다.예를 들어
ABCDEFG-MYACCOUNT1과 같습니다.이 형식으로 이러한 값을 가져오려면 :ref:
label-retrieve_org_account_name_key_pair_auth섹션을 참조하세요.
{Catalogname}은 권한을 부여하려는 Open Catalog의 카탈로그 이름입니다.
{catalogRoleName}은 권한을 부여하려는 카탈로그 역할의 이름입니다. 예: TableReader.
<service_admin_access_token>은 :ref:생성한 서비스 관리자 액세스 토큰<label-generate_service_admin_access_token_key_pair_auth>입니다.
<namespace_name>는 권한을 부여하려는 네임스페이스의 이름입니다. 중첩된 네임스페이스에 권한을 부여하려면 각 상위 네임스페이스와 함께 쉼표로 구분하여 지정합니다(예: "ns1","ns1a").
<privilege_name>은 카탈로그 역할에 부여하려는 네임스페이스 권한의 이름입니다. 사용 가능한 권한 목록은액세스 제어 권한<https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_을 참조하세요.
Snowflake Labs의 권한<https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#privileges>_을 참조하세요.
참고
Snowflake Labs의 예에서는 카탈로그에 대한 카탈로그 관리자 권한을 부여하는 CATALOG_MANAGE_CONTENT 권한을 부여합니다. 사용 가능한 다른 권한 목록은 Open Catalog 설명서의 액세스 제어 권한<https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_을 참조하세요.
카탈로그 역할에 테이블 권한 부여¶
다음 명령을 실행합니다.
curl -X PUT \ "https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/catalogs/{catalogName}/catalog-roles/{catalogRoleName}/grants" \ -H "Authorization: Bearer <service_admin_access_token>" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"grant": {"type": "table", "namespace": ["<namespace_name>"], "tableName": "<table_name>", "privilege": "<privilege_name>"}}'
- 여기서
<your_org_name>-<your_open_catalogaccount_name>은 하이픈으로 구분된 조직 이름과 Snowflake Open Catalog 계정 이름입니다.예를 들어
ABCDEFG-MYACCOUNT1과 같습니다.이 형식으로 이러한 값을 가져오려면 :ref:
label-retrieve_org_account_name_key_pair_auth섹션을 참조하세요.
{Catalogname}은 권한을 부여하려는 Open Catalog의 카탈로그 이름입니다.
{catalogRoleName}은 권한을 부여하려는 카탈로그 역할의 이름입니다. 예: TableReader.
<service_admin_access_token>은 :ref:생성한 서비스 관리자 액세스 토큰<label-generate_service_admin_access_token_key_pair_auth>입니다.
<namespace_name>는 권한을 부여하려는 네임스페이스의 이름입니다. 중첩된 네임스페이스에 권한을 부여하려면 각 상위 네임스페이스와 함께 쉼표로 구분하여 지정합니다(예: "ns1","ns1a").
<table_name>은 권한을 부여할 테이블의 이름입니다.
<privilege_name>은 카탈로그 역할에 부여하려는 권한의 이름입니다. 사용 가능한 권한 목록은액세스 제어 권한<https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_을 참조하세요.
Snowflake Labs의 권한<https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#privileges>_을 참조하세요.
참고
Snowflake Labs의 예에서는 카탈로그에 대한 카탈로그 관리자 권한을 부여하는 CATALOG_MANAGE_CONTENT 권한을 부여합니다. 사용 가능한 다른 권한 목록은 Open Catalog 설명서의 액세스 제어 권한<https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_을 참조하세요.
사용자 지정 역할에 카탈로그 역할 부여¶
중요
사용자 지정 역할은 대소문자를 구분합니다. 소문자로 또는 소문자와 대문자로 생성한 경우에도 모든 대문자로 사용자 지정 역할을 지정해야 합니다.
다음 명령을 실행합니다.
curl -X PUT \ "https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/principal-roles/{customRoleName}/catalog-roles/{catalogName}" \ -H "Authorization: Bearer <service_admin_access_token>" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"catalogRole": {"name": "<catalog_role_name>", "properties": {}, "entityVersion": 1}}'
- 여기서
<your_org_name>-<your_open_catalogaccount_name>은 하이픈으로 구분된 조직 이름과 Snowflake Open Catalog 계정 이름입니다.예를 들어
ABCDEFG-MYACCOUNT1과 같습니다.이 형식으로 이러한 값을 가져오려면 :ref:
label-retrieve_org_account_name_key_pair_auth섹션을 참조하세요.
{customRoleName}은 카탈로그 역할을 부여할 사용자 지정 역할의 이름입니다.
{catalogName}은 권한을 부여하려는 카탈로그 역할을 생성한 Open Catalog의 카탈로그 이름입니다.
<service_admin_access_token>은 :ref:생성한 서비스 관리자 액세스 토큰<label-generate_service_admin_access_token_key_pair_auth>입니다.
<catalog_role_name>은 사용자 지정 역할에 부여할 카탈로그 역할의 이름입니다.
Snowflake Labs에서 권한 부여<https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#grants>_를 참조하세요.
See 보안 카탈로그. These instructions describe how to grant a catalog role to a principal role but the process is the same. Instead of selecting a principal role from the list, you select your custom role.
필요한 경우 이 워크플로를 반복하여 사용자 지정 역할에 생성한 추가 카탈로그 역할을 부여합니다.
4단계: 사용자 만들기¶
Snowflake CLI 연결을 사용하여 Open Catalog에서 키 페어 인증 사용자를 만듭니다. 사람은 이 사용자의 자격 증명을 사용하여 Open Catalog UI에 로그인할 수 없습니다.
참고
설정한 기본 Snowflake CLI 연결에 POLARIS_ACCOUNT_ADMIN 역할이 부여되지 않은 경우, USE ROLE POLARIS_ACCOUNT_ADMIN 문을 명령에 포함해야 합니다.
사용자를 생성하려면 다음 명령을 실행하세요.
snow sql -q "create user <username> login_name='<username>';"
여기서
<username>은 키 페어 인증 사용자에게 할당할 사용자 이름입니다.
5단계: 사용자에게 사용자 지정 역할 부여¶
이 섹션에서는 Snowflake CLI 연결을 사용하여 하나 이상의 사용자에게 사용자 지정 역할을 부여합니다. 결과적으로, 사용자 지정 역할에 부여한 모든 카탈로그 역할에 부여된 권한을 사용자에게 부여합니다. Open Catalog의 RBAC 모델에 대한 자세한 내용은 RBAC 모델을 참조하세요.
참고
설정한 기본 Snowflake CLI 연결에 POLARIS_ACCOUNT_ADMIN 역할이 부여되지 않은 경우, USE ROLE POLARIS_ACCOUNT_ADMIN 문을 명령에 포함해야 합니다.
중요
사용자 지정 역할은 대소문자를 구분합니다. 소문자로 또는 소문자와 대문자로 생성한 경우에도 모든 대문자로 사용자 지정 역할을 지정해야 합니다.
다음 예에서는 keypairuser1 사용자에게 ENGINEER 사용자 지정 역할을 부여합니다.
snow sql -q "GRANT ROLE ENGINEER to user keypairuser1;"
사용자에게 역할이 부여되었는지 확인하려면 다음을 실행합니다.
snow sql -q "show grants to user keypairuser1;"
응답에서, 생성한 사용자 지정 역할(role 열)이 생성한 사용자(grantee_name 열)에 할당되었는지 확인합니다.
6단계: 사용자에 대한 액세스 토큰 생성¶
이 섹션에서는 사용자에 대한 액세스 토큰을 생성하여 나중에 키 페어 인증을 통해 해당 사용자를 Open Catalog에 연결하는 데 사용합니다.
단계는 다음과 같습니다.
개인 및 공개 키 생성¶
이 섹션에서는 개인 키와 공개 키를 생성하는 방법을 설명합니다.
개인 키를 생성하려면 다음 명령을 사용합니다.
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
공개 키를 생성하려면 다음 명령을 사용합니다.
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
공개 키를 사용자에게 할당¶
Snowflake CLI 연결을 사용하여 생성한 사용자에게 공개 키를 할당합니다.
참고
설정한 기본 Snowflake CLI 연결에 POLARIS_ACCOUNT_ADMIN 역할이 부여되지 않은 경우, USE ROLE POLARIS_ACCOUNT_ADMIN 문을 명령에 포함해야 합니다.
생성한 사용자에게 공개 키를 할당하려면 다음을 실행합니다.
snow sql -q "alter user <username> set RSA_PUBLIC_KEY='<your_public_key>';"
참고
공개 키를 검색해야 하는 경우
cat rsa_key.pub을 실행합니다.사용자의 공개 키(
RSA_PUBLIC_KEY) 및 사용자 RSA 공개 키(RSA_PUBLIC_KEY_FP)의 지문이 설정되었는지 확인합니다.snow sql -q "desc user keypairuser1;"
사용자의 JWT 생성¶
이 단계에서는 액세스 토큰을 생성하는 데 필요한 JWT를 생성합니다.
SnowSQL을 사용하여 JWT를 생성하려면 다음을 실행합니다.
snowsql --private-key-path rsa_key.p8 --generate-jwt -h <your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com -a <account-identifier> -u <user_name>
여기서
<your_org_name>-<your_open_catalogaccount_name>은 하이픈으로 구분된 조직 이름과 Snowflake Open Catalog 계정 이름입니다.예를 들어
ABCDEFG-MYACCOUNT1과 같습니다.이러한 값을 이 형식으로 가져오려면 조직 및 계정 이름 가져오기를 참조하세요.
<account-identifier>는 Snowflake Open Catalog 계정의 계정 식별자입니다. 이 식별자를 가져오려면 Open Catalog 계정 URL을 참조합니다(예: https://app.snowflake.com/us-west-2/abc12345/#/의 abc12345).<user_name>은 사용자에게 할당된 공개 키가 있는 Open Catalog 사용자의 사용자 이름입니다.
암호화한 경우 패스를 입력하거나 계속하려면 Enter 키를 선택합니다. JWT를 수신하는 데 몇 초 정도 걸릴 수 있습니다.
사용자에 대한 액세스 토큰 생성¶
JWT를 사용하여 사용자 지정 또는 기본 제공 역할에 대한 액세스 토큰을 검색합니다.
curl -i -X POST \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Accept: application/json" \ --data-urlencode "scope=session:role:<custom_role_name>" \ --data-urlencode "grant_type=client_credentials" \ --data-urlencode "client_secret=<your_JWT>" \ "https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/catalog/v1/oauth/tokens"
Where
<custom_role_name>is the name of A custom role you created, such asENGINEER.<your_JWT>는 이전 단계에서 생성한 JWT입니다.<your_org_name>-<your_open_catalogaccount_name>은 하이픈으로 구분된 조직 이름과 Snowflake Open Catalog 계정 이름입니다.예를 들어
ABCDEFG-MYACCOUNT1과 같습니다.이러한 값을 이 형식으로 가져오려면 조직 및 계정 이름 가져오기를 참조하세요.
변수(
$ACCESS_TOKEN)에 액세스 토큰을 저장합니다.
7단계: 키 페어 인증을 사용하여 Open Catalog에 연결¶
이 섹션에서는 키 페어 인증을 통해 사용자를 Open Catalog에 연결합니다. 지침은 키 페어 인증을 사용하여 Snowflake Open Catalog에 연결을 참조하세요.
키 페어 순환 구성¶
Open Catalog는 순환이 중단되지 않도록 다양한 활성 키를 지원합니다. Open Catalog에서 키 페어 순환을 구성하는 단계는 Snowflake에서 구성하는 단계와 동일합니다. 지침은 Snowflake 설명서의 키 페어 순환 구성을 참조하세요.
Apache Polaris™(Incubating) CLI를 사용하여 카탈로그 관리¶
키 페어 인증을 구성한 후에는 서비스 관리자 액세스 토큰을 생성하고 Apache Polaris™ (Incubating) CLI를 사용하여 Open Catalog에서 카탈로그를 설정하고 관리할 수 있습니다. 지침은 Snowflake Labs의 Open Catalog with Polaris 가이드를 참조하세요.