기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
특성 그룹을 사용하여 Lake Formation 활성화
Amazon SageMaker 특성 저장소의 특성 그룹에서 AWS Lake Formation을 활성화하면 오프라인 저장소의 특성 데이터에 열 수준, 행 수준 및 셀 수준 보안을 적용할 수 있습니다. Amazon S3 및 AWS Glue 리소스의 개별 IAM 정책을 통해 액세스를 관리하는 대신 Lake Formation 권한 부여 및 취소 권한 모델을 사용하여 특정 기능 및 레코드에 액세스할 수 있는 사용자와 역할을 제어합니다. Lake Formation에 대한 자세한 내용은 AWS Lake Formation 개발자 안내서를 참조하세요.
중요
Lake Formation 액세스 제어는 오프라인 저장소에만 적용됩니다. 오프라인 저장소는 Amazon S3에서 지원되며 AWS Glue Data Catalog Lake Formation이 관리하는에 등록됩니다. 온라인 스토어 액세스는 IAM 정책을 통해 계속 제어됩니다. Lake Formation을 설정하려면 SageMaker AI Python SDK()의 FeatureGroupManager 및 LakeFormationConfig 클래스를 사용합니다sagemaker.mlops.feature_store. Lake Formation은 하이브리드 액세스 모드를 지원하므로 점진적 마이그레이션 중에 IAM 정책과 Lake Formation 권한이 모두 공존할 수 있습니다.
사전 조건
Lake Formation을 활성화하기 전에 다음이 있는지 확인합니다.
-
오프라인 저장소가 구성된 SageMaker AI 특성 그룹 또는 설정의 일부로 오프라인 저장소가 있는 새 특성 그룹을 생성할 수 있습니다. Lake Formation은 오프라인 저장소가 생성하는 AWS Glue 데이터 카탈로그 테이블을 통한 액세스를 관리하기 때문에 오프라인 저장소가 필요합니다.
-
적절한 권한이 있는 IAM 실행 역할입니다. 다음 예제에서는 필요한 최소 IAM 정책을 보여줍니다. 자리 표시자 값을 해당 값으로 바꿉니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SageMakerFeatureGroupOperations", "Effect": "Allow", "Action": [ "sagemaker:CreateFeatureGroup", "sagemaker:DescribeFeatureGroup" ], "Resource": "arn:aws:sagemaker:*:*:feature-group/*" }, { "Sid": "LakeFormation", "Effect": "Allow", "Action": [ "lakeformation:RegisterResource", "lakeformation:GrantPermissions", "lakeformation:RevokePermissions", "lakeformation:ListPermissions" ], "Resource": "*" }, { "Sid": "GlueCatalogReadAccess", "Effect": "Allow", "Action": [ "glue:GetTable", "glue:GetDatabase" ], "Resource": [ "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/sagemaker_featurestore", "arn:aws:glue:*:*:table/sagemaker_featurestore/*" ] }, { "Sid": "GlueCatalogTableCreate", "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Resource": [ "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/sagemaker_featurestore", "arn:aws:glue:*:*:table/sagemaker_featurestore/*" ] }, { "Sid": "PassOfflineStoreRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::<account-id>:role/<offline-store-role-name>" }, { "Sid": "S3FeatureStoreStorage", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": "arn:aws:s3:::<offline-store-bucket-name>" }, { "Sid": "LakeFormationRegistrationRole", "Effect": "Allow", "Action": [ "iam:GetRole", "iam:GetRolePolicy" ], "Resource": "arn:aws:iam::<account-id>:role/<registration-role-name>" } ] }참고
LakeFormationRegistrationRole문은 Lake Formation에 Amazon S3 위치를 등록하는 데 사용되는 역할을 읽을 수 있는 권한을 부여합니다. Lake Formation 서비스 연결 역할(use_service_linked_role=True)을 사용하는 경우 리소스를 로 설정합니다arn:aws:iam::<account-id>:role/aws-service-role/lakeformation.amazonaws.com/AWSServiceRoleForLakeFormationDataAccess. 자체 등록 역할을 제공하는 경우 해당 역할의 ARN으로 설정합니다.참고
sagemaker_featurestore데이터베이스에서 하이브리드 액세스 모드가 비활성화된 경우 호출자에게 데이터베이스에 대한 Lake FormationCREATE_TABLE권한도 있어야 합니다. Lake Formation 관리자는 Lake Formation 콘솔 또는 API를 통해이 권한을 부여할 수 있습니다. -
계정에 구성된 Lake Formation 관리자입니다. 하나 이상의 IAM 사용자 또는 역할을 Lake Formation 관리자로 지정해야 합니다. 설정 지침은 Lake Formation 설명서의 Lake Formation 시작하기를 참조하세요.
-
SageMaker AI Python SDK 버전 3.8.0 이상.
sagemaker패키지를 설치하거나 업그레이드합니다.pip install --upgrade sagemaker>=3.8.0 -
교차 계정 구성(해당하는 경우). 특성 그룹의 오프라인 저장소 Amazon S3 버킷이 다른에 있는 경우 AWS Glue 리소스 정책 AWS 계정, AWS RAM 공유 수락, 리소스 링크, 소비자 데이터베이스 설정 등 추가 Lake Formation 교차 계정 공유 구성이 필요합니다. 자세한 내용은 Lake Formation 설명서의 계정 간 데이터 공유를 참조하세요.
주요 개념
다음 개념은 Lake Formation이 특성 저장소와 작동하는 방식을 이해하는 데 중요합니다.
IAM 전용 모델과 비교한 Lake Formation 권한 모델
기본적으로 특성 저장소에서 생성한 테이블을 포함한 AWS Glue Data Catalog 테이블에 대한 액세스는 IAM 정책만 통해 제어됩니다. Lake Formation을 활성화하면 액세스에 IAM 권한과 Lake Formation 권한이 모두 필요합니다. Lake Formation은 특정 데이터베이스, 테이블 또는 열DESCRIBE에 SELECT 대해 또는와 같은 권한을 IAM 보안 주체에 명시적으로 부여하는 권한 부여 및 취소 모델을 사용합니다.
하이브리드 액세스 모드
Lake Formation을 활성화할 때 하이브리드 액세스 모드 또는 Lake Formation 전용 모드를 사용할지 여부를 선택합니다.
-
하이브리드 액세스 모드(
hybrid_access_mode_enabled=True): IAM 정책과 Lake Formation 권한이 모두 평가됩니다. 기존 IAM 정책을 통해 액세스할 수 있는 보안 주체는 계속 액세스할 수 있으며 Lake Formation을 통해 세분화된 액세스 권한을 추가로 부여할 수 있습니다. 이는 점진적 마이그레이션에 유용합니다. -
Lake Formation 전용 모드(
hybrid_access_mode_enabled=False): Lake Formation 권한만 평가됩니다. AWS Glue 테이블에 대한 기존 IAM 기반 액세스가 취소됩니다. 이는 가장 강력한 액세스 제어를 제공하지만 기존 워크로드를 손상시킬 수 있습니다.
주의
hybrid_access_mode_enabled=False를 설정하면 SDK가 AWS Glue 테이블에 대한 IAMAllowedPrincipal 권한 부여를 취소합니다. IAM 권한만으로이 테이블에 액세스하는 기존 작업, 노트북 또는 파이프라인은 즉시 액세스 권한을 잃게 됩니다. 하이브리드 액세스 모드를 비활성화하기 전에 액세스가 필요한 모든 보안 주체에게 필요한 Lake Formation 권한을 부여했는지 확인합니다.
참고
테이블 형식이 Iceberg인 경우 교차 계정 액세스를 위한 하이브리드 액세스 모드를 비활성화해야 합니다.
S3 거부 정책
AWS Glue Data Catalog 테이블에서 Lake Formation을 활성화한 후에도 Amazon S3에 직접 액세스할 수 있는 사용자(IAM 정책을 통해)는 기본 Amazon S3 객체를 직접 읽어 Lake Formation을 우회할 수 있습니다. 이 격차를 해소하려면 Lake Formation 서비스 역할 및 특성 저장소 실행 역할을 제외한 모든 보안 주체의 오프라인 저장소 접두사에 대한 직접 액세스를 거부하는 Amazon S3 버킷 정책을 적용합니다.
중요
SDK는 Amazon S3 거부 정책을 자동으로 적용하지 않습니다. Lake Formation을 활성화하면 SDK는 권장 버킷 정책을 경고 메시지로 로깅합니다. 이 정책을 검토하고 Amazon S3 버킷에 적용하여 액세스 제어를 end-to-end로 적용합니다.
구성 참조
LakeFormationConfig 클래스를 사용하여 Lake Formation을 구성합니다. 새 특성 그룹을 생성할 FeatureGroupManager.create() 때이 구성을에 전달하거나 기존 특성 그룹에 enable_lake_formation() 대해와 직접 개별 파라미터를 사용합니다.
| 파라미터 | 유형 | 기본값 | 필수 | 설명 |
|---|---|---|---|---|
enabled |
bool | False | 아니요 | 특성 그룹의 오프라인 저장소에서 Lake Formation을 활성화True하려면 로 설정합니다. |
use_service_linked_role |
bool | True | 아니요 | Lake Formation 서비스 연결 역할을 사용하여 S3 위치를 등록할지 여부입니다. 사용자 지정 등록 역할을 사용하는 False 경우를 로 설정합니다. 교차 계정 액세스 또는 타사 쿼리 엔진(예: Apache Spark)을 사용할 때는 서비스 연결 역할을 사용할 수 없습니다. 타사 엔진의 경우를 통해 자체 등록 역할을 제공해야 합니다registration_role_arn. |
registration_role_arn |
str | 없음 | 조건부 | Lake Formation에 오프라인 저장소 S3 위치를 등록하기 위한 사용자 지정 IAM 역할의 ARN입니다. use_service_linked_role가 일 때 필요합니다False. |
hybrid_access_mode_enabled |
bool | — | 예 | AWS Glue 테이블IAMAllowedPrincipal에서 취소할지 여부입니다. False = Lake Formation 전용 권한. True = 하이브리드 모드(IAM 및 Lake Formation 모두). 명시적으로 선택해야 합니다. |
acknowledge_risk |
bool | — | 예 | True 계속하려면 여야 합니다. 이는 안전 확인입니다. 를 로 설정하면 작업이 수행RuntimeError되기 전에가 False 발생합니다. |
acknowledge_risk 이해
acknowledge_risk 파라미터는 안전 게이트입니다. 로 설정하면 다음을 True승인합니다.
-
인 경우
hybrid_access_mode_enabled=False:이 AWS Glue 테이블을 쿼리하는 기존 IAM 기반 작업, 노트북 및 파이프라인은 즉시 액세스 권한을 잃게 됩니다. 활성화하기 전이나 직후에 Lake Formation 권한을 해당 보안 주체에 부여해야 합니다. -
Lake Formation 권한이 올바르게 구성되지 않은 경우: 권한이 수정될 때까지 특성 그룹의 데이터에 모든 사용자가 액세스할 수 없게 될 수 있습니다.
-
작업은 AWS Glue 데이터 카탈로그 권한을 수정합니다. 이러한 변경 사항은 특성 저장소 사용자뿐만 아니라 AWS Glue 테이블의 모든 소비자에게도 영향을 미칩니다. 이 테이블에서 읽는 모든 Athena 쿼리, Spark 작업 또는 기타 서비스가 영향을 받습니다.
작동 방식
Lake Formation을 활성화하면 SDK는 3단계 설정을 수행합니다.
-
S3 위치를 등록합니다. SDK는 Lake Formation 서비스 연결 역할 또는 지정한 사용자 지정 등록 역할을 사용하여 오프라인 저장소의 S3 경로를 Lake Formation에 등록합니다. 타사 쿼리 엔진(예: Apache Spark)을 사용하는 경우 서비스 연결 역할이 타사 엔진 액세스를 지원하지 않으므로 자체 등록 역할을 제공해야 합니다.
-
Lake Formation 권한을 부여합니다. SDK는 AWS Glue 데이터 카탈로그 테이블에 대한
SELECT,INSERT,DELETEDESCRIBE, 및ALTER권한을 특성 그룹의 실행 역할에 부여합니다. -
선택적으로 IAMAllowedPrincipal을 취소합니다.
hybrid_access_mode_enabled=False를 설정하면 SDK가 AWS Glue 테이블에 대한IAMAllowedPrincipal권한 부여를 취소합니다.
모든 단계가 완료되면 SDK는 권장 S3 버킷 거부 정책을 기록합니다. Lake Formation 액세스 제어를 우회하는 직접 Amazon S3 액세스를 방지하려면이 정책을 검토하고 적용합니다.
참고
설정이 중간에 실패하는 경우(예: S3 위치를 등록한 후 권한을 부여하기 전에) enable_lake_formation() 메서드를 안전하게 다시 실행할 수 있습니다. SDK는 멱등성이며 이미 성공적으로 완료된 단계를 건너뜁니다.
사용 예제
Lake Formation 액세스 제어를 사용하여 새 특성 그룹 생성
다음 예제에서는 오프라인 저장소가 있는 새 특성 그룹을 생성하고 단일 작업으로 Lake Formation 액세스 제어를 활성화합니다.
from sagemaker.core.helper.session_helper import Session from sagemaker.core.shapes import ( FeatureDefinition, OfflineStoreConfig, OnlineStoreConfig, S3StorageConfig, ) from sagemaker.mlops.feature_store import FeatureGroupManager, LakeFormationConfig session = Session() region = session.boto_region_name role_arn = "arn:aws:iam::<account-id>:role/<execution-role-name>" registration_role_arn = "arn:aws:iam::<account-id>:role/<registration-role-name>" fg_name = "my-feature-group" bucket = session.default_bucket() offline_s3_uri = f"s3://{bucket}/feature-store/{fg_name}" feature_definitions = [ FeatureDefinition(feature_name="customer_id", feature_type="String"), FeatureDefinition(feature_name="event_time", feature_type="String"), FeatureDefinition(feature_name="age", feature_type="Integral"), FeatureDefinition(feature_name="total_purchases", feature_type="Integral"), FeatureDefinition(feature_name="avg_order_value", feature_type="Fractional"), ] fg = FeatureGroupManager.create( feature_group_name=fg_name, record_identifier_feature_name="customer_id", event_time_feature_name="event_time", feature_definitions=feature_definitions, online_store_config=OnlineStoreConfig(enable_online_store=False), offline_store_config=OfflineStoreConfig( s3_storage_config=S3StorageConfig(s3_uri=offline_s3_uri), table_format="Iceberg", ), role_arn=role_arn, description="A feature group with Lake Formation-managed offline store", # Example configuration — adjust parameters for your use case. lake_formation_config=LakeFormationConfig( enabled=True, use_service_linked_role=False, registration_role_arn=registration_role_arn, # Set to True to keep existing IAM-based access (hybrid mode). hybrid_access_mode_enabled=False, acknowledge_risk=True, ), region=region, )
기존 특성 그룹에서 Lake Formation 활성화
다음 예시에서는 이미 존재하는 특성 그룹에서 Lake Formation을 활성화합니다.
from sagemaker.mlops.feature_store import FeatureGroupManager fg = FeatureGroupManager.get(feature_group_name="my-existing-feature-group") result = fg.enable_lake_formation( use_service_linked_role=False, registration_role_arn="arn:aws:iam::<account-id>:role/<registration-role-name>", hybrid_access_mode_enabled=False, acknowledge_risk=True, )
SageMaker AI 작업과 함께 Lake Formation 지원 특성 그룹 사용
SageMaker AI 훈련 및 처리 작업에서 Lake Formation 지원 특성 그룹에 액세스할 수 있습니다. Lake Formation 지원 기능 데이터를 읽으려면 Athena를 통해 데이터를 쿼리하거나 Lake Formation GetTemporaryGlueTableCredentials API를 사용하여 AWS Glue 테이블에 범위가 지정된 임시 Amazon S3 자격 증명을 제공할 수 있습니다. 컴퓨팅 역할에 대한 Lake Formation 권한 구성에 대한 자세한 내용은 Lake Formation 설명서의 Lake Formation 권한 참조를 참조하세요.
크로스 계정 액세스
Lake Formation은 특성 그룹 데이터 공유를 지원합니다 AWS 계정. 생산자 계정이 특성 그룹에서 Lake Formation을 활성화하면 명명된 리소스 방법 또는 Lake Formation 태그 기반 액세스 제어(LF-TBAC)를 사용하여 소비자 계정에 대한 교차 계정 액세스 권한을 부여할 수 있습니다.
교차 계정 공유에는 다음 설정이 필요합니다.
-
생산자 계정은 AWS Glue 데이터 카탈로그 테이블에 대한 교차 계정 권한을 소비자 계정, AWS 조직 또는 조직 단위에 부여합니다.
-
계정이 동일한 AWS 조직에 있지 않은 경우 소비자 계정은 AWS RAM 리소스 공유 초대를 수락합니다. 자세한 내용은 리소스 공유 초대 수락을 참조하세요.
-
소비자 계정은 로컬 데이터베이스의 공유 테이블에 대한 리소스 링크를 생성합니다. Athena 및 Amazon Redshift Spectrum과 같은 서비스가 공유 리소스를 쿼리하려면 리소스 링크가 필요합니다. 자세한 내용은 리소스 링크 정보를 참조하세요.
-
소비자 계정의 Lake Formation 관리자는 액세스가 필요한 IAM 보안 주체에게 리소스 링크 및 기본 공유 테이블에 대한 권한을 부여합니다.
중요
타사 쿼리 엔진(예: Apache Spark)을 사용하는 경우 공유 테이블에 대한 전체 테이블 액세스를 활성화해야 합니다. 타사 엔진은 세션 태그를 통한 Lake Formation의 열 수준 또는 셀 수준 필터링을 지원하지 않으므로 전체 테이블 자격 증명 벤딩이 필요합니다. 또한 서비스 연결 역할 대신 사용자 지정 등록 역할에 Amazon S3 위치를 등록해야 합니다. 자세한 내용은 타사 엔진에 대한 전체 테이블 액세스를 참조하세요.
교차 계정 공유를 위한 사전 조건, step-by-step 지침 및 모범 사례는 AWS Lake Formation 개발자 안내서의 다음 주제를 참조하세요.
-
교차 계정 액세스 - 교차 계정 공유 방법 및 AWS RAM 통합에 대한 개요입니다.
-
교차 계정 사전 조건 - 생산자와 소비자 계정 모두에 필요한 구성입니다.
-
데이터 카탈로그 테이블 및 데이터베이스 공유 Step-by-step 지침입니다.
-
태그 기반 액세스 제어 - 여러 계정에서 대규모 권한 관리에 권장됩니다.
설정 후 세분화된 액세스 권한 부여
Lake Formation을 활성화한 후 Lake Formation 관리자는 Lake Formation 콘솔, API 또는 CLI를 사용하여 다른 IAM 보안 주체에 세분화된 권한을 부여할 수 있습니다. Lake Formation은 열 수준, 행 수준 및 셀 수준 액세스 제어를 지원합니다.
Lake Formation 권한 부여 및 관리에 대한 지침은 AWS Lake Formation 개발자 안내서의 다음 주제를 참조하세요.
-
행 수준 및 셀 수준 필터링을 위한 Lake Formation의 데이터 필터