기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Snowflake Iceberg 카탈로그에 페더레이션
AWS Glue Data Catalog 는 Snowflake 서비스 보안 주체의 OAuth2 자격 증명을 Snowflake 사용하여에 페더레이션합니다. 이 페더레이션을 사용하여 Snowflake Horizon 및 Snowflake Polaris 카탈로그에 연결할 수 있습니다. 이 인증 메커니즘을 사용하면 Data Catalog가 서비스 보안 주체와 연결된 권한을 기반으로 카탈로그에 있는 다양한 객체(예: 카탈로그, 데이터베이스 및 테이블)의 메타데이터에 액세스할 수 있습니다. 올바른 객체에 대한 액세스를 보장하려면의 서비스 보안 주체에게 이러한 객체의 메타데이터Snowflake를 읽는 데 필요한 권한을 부여해야 합니다.
사전 조건
Lake Formation에서 관리하는 데이터 카탈로그에서 페더레이션 카탈로그를 생성하기 전에 다음 권한이 있는지 확인합니다.
IAM 보안 주체(사용자 또는 역할)에는 다음 권한이 있어야 합니다.
-
Lake Formation 권한 -
lakeformation:RegisterResource,lakeformation:DescribeResource -
AWS Glue 권한 -
glue:CreateConnection,glue:CreateCatalog,glue:GetConnection,glue:PassConnection -
Secrets Manager 권한 -
secretsmanager:CreateSecret,secretsmanager:GetSecretValue -
IAM 권한 -
iam:CreateRole,iam:AttachRolePolicy,iam:PassRole
Lake Formation 데이터 레이크 관리자이거나 데이터 카탈로그에 대한 CREATE_CATALOG 권한이 있어야 합니다.
페더레이션 카탈로그 생성
콘솔에 로그인하고 https://console.aws.amazon.com/lakeformation/
Lake Formation 콘솔을 엽니다. 오른쪽 상단 페이지에서 원하는 AWS 리전을 선택합니다.
왼쪽 탐색 창에서 카탈로그를 선택합니다.
카탈로그 생성을 선택하여 카탈로그 생성 워크플로를 엽니다.
데이터 소스 선택 단계에서 사용 가능한 옵션 Snowflake 중에서 선택합니다.
카탈로그 세부 정보 설정 단계에서 카탈로그 세부 정보, 연결 세부 정보 및 등록 세부 정보의 세 가지 정보를 제공합니다.
카탈로그 세부 정보 컨테이너에서 AWS Glue 페더레이션 카탈로그에 고유한 이름을 제공하고 기존 Snowflake 카탈로그의 이름을 입력합니다.
연결 세부 정보 컨테이너에서 액세스 권한이 있는 기존 연결 중에서 선택하거나 구성을 제공하여 새 커넥터를 생성할 수 있습니다.
새로운 연결 구성은 다음과 같습니다.
연결 이름 - AWS Glue 연결 객체의 고유한 이름입니다.
인스턴스 URL - 기존 Snowflake 계정의 엔드포인트 URL입니다.
인증 -가 원격 카탈로그 서버에 연결하는 데 AWS Glue 사용하는 인증 구성을 지정합니다.는 OAuth2 인증과 사용자 지정 인증을 모두 AWS Glue 지원합니다.
토큰 URL - 원격 카탈로그의 자격 증명 공급자의 URL을 지정합니다.
OAuth2 클라이언트 ID - 원격 카탈로그와 연결된 OAuth2 자격 증명의 클라이언트 ID를 지정합니다.
보안 암호 -를 사용하여 OAuth2 클라이언트 보안 암호를 저장하고 AWS Secrets Manager 사용하거나 텍스트 상자에 보안 암호 값을 입력합니다. 콘솔에 보안 암호를 수동으로 입력하면가 사용자를 대신하여 보안 암호를 AWS Glue 생성합니다.
토큰 URL 범위 - 인증을 위한 OAuth 범위를 지정합니다.
카탈로그 케이싱 필터 - 원격 카탈로그에서 데이터 카탈로그로 소문자 또는 대문자 객체를 가져올지 여부를 선택합니다.
AWS Glue 및 Lake Formation 서비스 보안 주체가 원격 Iceberg 테이블의 AWS Secrets Manager 및 Amazon S3 위치에서 각각 보안 암호에 액세스하는 데 사용할 수 있는 IAM 역할을 생성합니다. 등록 드롭다운에서 IAM 역할을 선택합니다. IAM 정책 세부 정보는 다음 CLI 섹션의 2단계 및 3단계를 참조하세요.
연결 테스트를 선택하여 연결 속성과 IAM 역할 액세스가 올바르게 구성되었는지 테스트합니다.
다음을 선택하여 설정을 검토합니다.
검토 페이지에서 카탈로그 생성을 선택합니다.
-
AWS Secrets Manager 보안 암호 생성
AWS Glue 커넥터는 OAuth2와 Custom이라는 두 가지 인증 유형을 지원합니다. OAuth2 옵션을 사용하는 경우 AWS Secrets Manager 를 사용하여 Snowflake 서비스 보안 주체의 클라이언트 암호를 저장합니다. 나중에 AWS Glue 연결을 생성할 때이 보안 암호를 사용합니다. 사용자 지정 인증의 경우 AWS Secrets Manager 를 사용하여 액세스 토큰을 저장하고 검색합니다.
다음 예제에서는 ,
your-snowflake-secretclient_secret를 사용자 고유의 정보로 바꿉니다.regionaws secretsmanager create-secret \ --nameyour-snowflake-secret\ --description "Snowflake secret" \ --secret-string '{ "USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET": "client_secret" }' \ --regionregion참고
USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET는가 보안 암호의 클라이언트 보안 암호 값을 참조하는 데 AWS Glue 사용하는 예약된 키워드입니다. Lake Formation 콘솔에서 보안 암호를 생성할 때도 동일한 키워드를 사용합니다. -
이전 단계에서 생성된 보안 암호에 대한 AWS Glue 연결 객체 액세스 권한을 부여하는 IAM 역할 생성
AWS Glue 연결 객체는를 사용하여 OAuth AWS Secrets Manager 보안 암호 토큰을 저장, 검색 및 새로 고칠 때 보안 암호 AWS Secrets Manager 에 대한 액세스 권한이 필요합니다. 또한 AWS Glue 연결 객체는 Amazon VPC 엔드포인트를 사용하여 Snowflake 계정에 대한 연결을 제한할 때 Amazon VPC 네트워크 인터페이스를 생성, 설명 및 사용할 수 있는 액세스 권한이 필요합니다.
IAM 정책을 생성하여 IAM 역할에 연결합니다. 신뢰 정책에 AWS Glue 서비스 보안 주체를 추가합니다.
다음 예제에서는 ,
및your-vpc-idyour-secrets-manager-ARN를 자체 정보로 바꿉니다.your-subnet-id1예 IAM 정책
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:PutSecretValue" ], "Resource": [ "your-secrets-manager-ARN" ] }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": "*", "Condition": { "ArnEquals": { "ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/your-vpc-id", "ec2:Subnet": ["arn:aws:ec2:region:account-id:subnet/your-subnet-id1"] } } } ] }예 신뢰 정책
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" }] } -
카탈로그의 Amazon S3 위치에 대한 읽기 액세스 권한을 Lake Formation에 부여하는 IAM 정책 생성
데이터 카탈로그에서 페더레이션 카탈로그의 카탈로그 소유자는 Lake Formation을 사용하여 데이터 팀에 대략적인 테이블 액세스, 세분화된 열 수준, 행 수준 및 셀 수준 액세스, 태그 기반 액세스 권한을 부여합니다. Lake Formation은 원격 Iceberg 테이블의 기본 Amazon S3 위치에 대한 액세스 권한을 부여하는 IAM 역할을 사용합니다. 이 액세스를 통해 Lake Formation은 원격 테이블을 쿼리하는 분석 엔진에 범위가 지정된 액세스 자격 증명을 제공할 수 있습니다.
IAM 정책을 생성하고 IAM 역할에 연결합니다. Lake Formation 서비스 보안 주체를 역할 신뢰 정책에 추가합니다.
다음 예제에서는
및amzn-s3-demo-bucketN을 고유한 정보로 바꿉니다.your-kms-key예 IAM 정책
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*", "arn:aws:s3:::amzn-s3-demo-bucket2/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket2" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt" ], "Resource": [ "your-kms-key" ] } ] }예 신뢰 정책
{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": "sts:AssumeRole" }] }참고
Lake Formation 콘솔을 사용하여 페더레이션 카탈로그를 생성하면 콘솔은 두 정책이 모두 연결된 단일 IAM 역할을 사용하여 설정을 완료합니다.
-
AWS Glue 연결 객체 생성
AWS Glue 커넥터는 OAuth2 및 사용자 지정 인증 방법을 지원합니다. 데이터 카탈로그 연결 객체는 원격 카탈로그의 소문자 또는 대문자 객체를 데이터 카탈로그로 가져올 수 있는
CATALOG_CASING_FILTER구성을 지원합니다.다음 예제에서는 OAuth2 인증 구성을 사용하여 AWS Glue 연결을 생성합니다.
를 자신의 정보로 대체합니다.highlighted sectionsaws glue create-connection \ --connection-input '{ "Name": "your-glue-connection-to-snowflake-account", "ConnectionType": "SNOWFLAKEICEBERGRESTCATALOG", "ConnectionProperties": { "INSTANCE_URL": "your-snowflake-account-URL", "ROLE_ARN": "your-IAM-role-for-secrets-and-VPC-access", "CATALOG_CASING_FILTER": "LOWERCASE_ONLY" }, "AuthenticationConfiguration": { "AuthenticationType": "OAUTH2", "OAuth2Properties": { "OAuth2GrantType": "CLIENT_CREDENTIALS", "TokenUrl": "your-internal-or-external-token-server-url", "OAuth2ClientApplication": { "UserManagedClientApplicationClientId": "our-client-id" }, "TokenUrlParametersMap": { "scope": "all-apis" } }, "SecretArn": "arn:aws:secretsmanager:your-aws-region:your-aws-account-id:secret:snowflake-secret" } }' -
Lake Formation 리소스로 AWS Glue 연결 등록
AWS Glue 연결 객체(4단계에서 생성됨) 및 IAM 역할(3단계에서 생성됨)을 사용하여 이제 AWS Glue 연결 객체를 Lake Formation 관리형 리소스로 등록할 수 있습니다.
및your-glue-connector-arn을(를) 자신의 정보로 대체합니다.your-IAM-role-ARN-having-LF-accessaws lakeformation register-resource \ --resource-arnyour-glue-connector-arn\ --role-arnyour-IAM-role-ARN-having-LF-access\ --with-federation \ --with-privileged-access -
데이터 카탈로그에서 페더레이션 카탈로그 생성
AWS Glue 연결 객체를 생성하고 Lake Formation에 등록한 후 데이터 카탈로그에서 페더레이션 카탈로그를 생성할 수 있습니다.
페더레이션 카탈로그에에서 고유한 이름을 제공하고
,에서 카탈로그를 참조하고your-federated-catalog-name, Snowflake에서 이전에 생성한 연결 이름을 입력합니다catalog-name-in-Snowflake.your-glue-connection-nameaws glue create-catalog \ --nameyour-federated-catalog-name\ --catalog-input '{ "FederatedCatalog": { "Identifier":catalog-name-in-Snowflake", "ConnectionName":your-glue-connection-name" }, "CreateTableDefaultPermissions": [], "CreateDatabaseDefaultPermissions": [] }'
와 통합 시 고려 사항 Snowflake
-
에서 리소스(예: 데이터베이스 및 테이블)를 삭제해도 SnowflakeLake Formation은 해당 페더레이션 리소스에 부여된 권한을 자동으로 취소하지 않습니다. 액세스 권한을 제거하려면 Lake Formation을 사용하여 페더레이션 리소스에 대해 이전에 부여된 권한을 명시적으로 취소해야 합니다.
-
CATALOG_CASING_FILTER='UPPERCASE_ONLY'구성으로 원격 카탈로그를 탑재하면 대문자 식별자가 있는 데이터베이스와 테이블이 페더레이션되지만 소문자 식별자가 있는 객체는 페더레이션되지 않습니다. -
동일한 AWS Glue 연결을 재사용하여 여러 페더레이션 카탈로그를 생성할 수 있습니다. 카탈로그를 삭제해도 연결된 연결은 삭제되지 않습니다. 연결을 삭제하려면 AWS CLI
aws glue delete-connection명령을 사용하고 연결된 모든 카탈로그를 먼저 삭제해야 합니다. -
Polaris 카탈로그에 중첩된 네임스페이스는 지원되지 않습니다. 즉, 카탈로그 페더레이션은 3파트 표기법을 따르는 원격 Iceberg 테이블에 액세스할 수 있습니다
catalog.database.table.