AWS 기술 블로그
SageMaker Studio에서 TIP와 S3 Access Grants를 활용한 Athena 쿼리 실행하기
개요
기업 환경에서 여러 데이터 과학자가 Amazon SageMaker Studio를 공유하여 사용할 때, 사용자별로 세밀한 데이터 접근 권한을 관리하고 감사 추적을 수행하는 것은 중요한 보안 요구사항입니다. 그러나 기존의 IAM Role 기반 접근 방식에서는 SageMaker Studio의 모든 사용자가 동일한 Execution Role을 공유하게 되어, 개별 사용자를 식별하고 차별화된 권한을 부여하는 것이 어려웠습니다.
IAM Identity Center가 제공하는 Trusted Identity Propagation(TIP) 기능은 이러한 문제를 해결합니다. TIP를 활성화하면 AWS IAM Identity Center(IdC)의 사용자 ID가 SageMaker Studio 세션을 통해 다른 AWS 서비스로 전파되어, 사용자별로 세밀한 접근 제어와 완전한 감사 추적이 가능해집니다.
이 블로그에서는 SageMaker Studio에서 TIP를 활성화하고, S3 Access Grants 및 Lake Formation과 연동하여 Athena 쿼리를 실행하는 엔드투엔드 구현 방법을 단계별로 안내합니다.
구성 아키텍처
이 솔루션은 IAM Identity Center, SageMaker TIP, S3 Access Grants, Lake Formation, Athena를 통합하여 엔터프라이즈급 데이터 거버넌스를 구현합니다. 아키텍처는 사용자 인증, 권한 관리, 데이터 접근, 감사 추적의 4개 계층으로 구성됩니다.
그림: SageMaker TIP 아키텍처 개요
이 솔루션은 다음과 같은 AWS 서비스들을 통합하여 구성됩니다:
- IAM Identity Center: 중앙 집중식 사용자 인증 및 ID 관리
- SageMaker Studio with TIP: 사용자 ID 전파가 활성화된 데이터 과학 플랫폼
- S3 Access Grants: 사용자별 세밀한 S3 접근 권한 및 임시 자격증명 발급
- Lake Formation: 데이터 카탈로그에 대한 테이블/컬럼 수준 권한 관리
- Athena with TIP Workgroup: IAM Identity Center 인증 모드로 TIP를 지원하는 쿼리 엔진
- CloudTrail: onBehalfOf 필드를 통한 완전한 감사 추적
Trusted Identity Propagation(TIP) 구성 방법 및 장점
여러 데이터 과학자가 하나의 SageMaker Studio Domain을 공유하면, 모든 노트북이 동일한 Execution Role 권한으로 실행됩니다. 이때 Athena나 S3 같은 데이터 서비스 입장에서는 ‘어떤 Role이 호출했는지’만 보일 뿐 ‘어떤 사용자가 호출했는지’는 알 수 없습니다. 사용자마다 접근 권한을 다르게 부여할 수도, 문제가 생겼을 때 행위자를 추적할 수도 없는 것이 기존 방식의 한계입니다.
Trusted Identity Propagation(TIP)은 이 문제를 간단한 아이디어로 해결합니다. 사용자가 IAM Identity Center(IdC)로 로그인하면 SageMaker가 그 사용자의 ID를 Role 세션에 이름표처럼 붙이고, 이후 노트북에서 Athena, S3 Access Grants, Lake Formation을 호출할 때마다 이 이름표가 함께 전달됩니다. 덕분에 각 서비스는 공유 Role 권한과 별개로 ‘실제 사용자’를 기준으로 접근을 허용하거나 거부할 수 있습니다.
구성 방법의 핵심은 한 가지입니다. Execution Role의 Trust Policy에 sts:AssumeRole 외에 sts:SetContext 액션을 추가로 허용하는 것입니다. 이 액션이 있어야 SageMaker가 Role 세션에 사용자 컨텍스트를 주입할 수 있습니다. 아래 그림처럼 요청 흐름 자체는 동일하지만, sts:SetContext 유무에 따라 서비스가 사용자를 식별할 수 있는지와 CloudTrail에 남는 기록이 달라집니다.
그림: sts:SetContext 유무에 따른 요청 흐름과 CloudTrail 기록 비교
| 구분 | TIP 미사용 | TIP 사용 |
| Trust Policy | sts:AssumeRole만 허용 | sts:AssumeRole + sts:SetContext 허용 |
| 서비스가 보는 요청 주체 | 공유 Role (모든 사용자 동일) | 공유 Role + 실제 사용자 ID |
| 사용자별 권한 제어 | 불가능 — Role 단위 권한만 적용 | 가능 — S3 Access Grants·Lake Formation과 연동 |
| CloudTrail 감사 기록 | Role ARN만 기록되어 행위자 불명 | onBehalfOf 필드에 사용자 ID까지 기록 |
사전 준비 사항
이 가이드를 시작하기 전에 AWS 환경과 필요한 리소스를 준비해야 합니다. 특히 S3 버킷과 VPC 설정은 사전에 완료되어 있어야 원활하게 진행할 수 있습니다.
- AWS 계정 및 적절한 관리자 권한
- SageMaker Studio를 생성할 VPC와 서브넷 (테스트 편의상 public internet access 사용, 프로덕션 환경에서는 VPC 전용 구성을 권장)
- 테스트용 S3 버킷 2개:
- Athena 쿼리 결과 저장용 버킷 (예: sagemaker-tip-access-test-{account-id})
- 데이터 테이블 저장용 버킷 (예: glue-table-test-{account-id})
- CloudTrail 활성화
구성 절차
IAM Identity Center 설정
IAM Identity Center는 AWS 계정 전체에서 사용자 ID를 중앙 집중식으로 관리하는 서비스입니다. TIP를 사용하려면 반드시 IAM Identity Center를 활성화하고 사용자를 생성해야 합니다.
Identity Center 활성화
AWS Console에서 IAM Identity Center 서비스로 이동합니다.
IAM Identity Center 서비스 소개 페이지. “Enable IAM Identity Center” 버튼을 클릭하여 활성화합니다.
“Enable an account instance of IAM Identity Center” 설정 페이지. Organizations 연동 및 리전을 확인합니다.
Enable되고 나면 아래와 같이 구성된 사항을 확인할 수 있습니다.
IAM Identity Center 활성화 완료 후 Dashboard 화면. 왼쪽 메뉴에서 Users, Groups, Settings 등을 확인할 수 있습니다.
MFA는 기본적으로 강제되도록 구성되어 있습니다. 빠른 테스트를 위해 Settings > Authentication 탭에서 MFA를 비활성화하고 진행할 수 있지만, 프로덕션 환경에서는 MFA 사용을 권고합니다.
Settings > Authentication 탭. Multi-factor authentication의 “Configure” 버튼을 클릭합니다.
Configure multi-factor authentication 화면. 테스트를 위해 “Never (disabled)”를 선택한 모습입니다.
테스트 사용자 생성
Identity Center 콘솔에서 Users 메뉴로 이동합니다.
Users 관리 페이지. “No users found” 상태에서 “Add user” 버튼을 클릭합니다.
Add user 버튼을 클릭하여 사용자 정보를 입력합니다:
Specify user details 화면. Username, Email address, First name, Last name, Display name을 입력합니다.
- Username: emma
- Email address: 사용자 이메일
- First name / Last name: 입력
- Display name: 입력
- Password: “Generate a one-time password that you can share with this user.” 옵션 선택 (일회용 패스워드)
Add user to groups (optional) 화면. 이번 가이드에서는 그룹을 건너뛰고 진행합니다.
Groups는 건너뛰고 사용자를 생성합니다.
사용자 생성 완료 후 일회용 비밀번호 확인 화면. AWS access portal URL과 one-time password가 표시됩니다.
Identity Center 인스턴스 ARN 확인
나중에 필요하므로 Identity Center 인스턴스 ARN을 메모해둡니다:
IAM Identity Center Settings 페이지. Identity Center instance name, Region, Organization ID 등을 확인할 수 있습니다.
- 형식: arn:aws:sso:::instance/ssoins-xxxxxxxxxxxxx
- Settings 메뉴에서 확인 가능
사용자 ID 확인
- Identity Center 콘솔에서 Users 메뉴로 이동합니다.
- 생성한 사용자(emma)를 클릭합니다.
- User ID 값을 복사하여 메모해둡니다 (예: 34e86dbc-70b1-7000-19e9-052a443e60ad).
SageMaker Execution Role 생성
TIP가 작동하려면 SageMaker가 현재 작업에 사용자 컨텍스트를 주입할 수 있어야 합니다. 이를 위해 SageMaker Execution Role의 Trust Policy에 sts:SetContext 액션이 포함되어야 합니다. 이 섹션에서는 TIP를 지원하는 Execution Role을 생성하고, S3 Access Grants 및 Lake Formation과 연동하기 위한 권한을 설정합니다.
IAM Role 생성
IAM Console에서 Roles > Create role을 선택합니다.
Trusted entity type에서 AWS service를 선택합니다.
Select trusted entity 화면. Use case에서 “SageMaker”를 선택합니다.
SageMaker – Execution을 선택하고 다음으로 진행합니다.
권한 정책 연결
아래 그림과 같이 권한을 연결합니다.
Add permissions 화면. AmazonSageMakerFullAccess 정책이 자동으로 선택됩니다.
기본적으로 AmazonSageMakerFullAccess 정책이 자동으로 선택됩니다. 그대로 유지하고 다음으로 진행합니다.
Role 이름 지정
Role naming 화면. Role name에 “SageMakerExecutionRoleForTIP”를 입력합니다.
Role name: SageMakerExecutionRoleForTIP
화면에서 Create role 버튼을 눌러 IAM Role을 생성합니다.
Trust Policy 수정
생성된 Role의 Trust relationships 탭으로 이동하여 “Action” 부분을 아래와 같이 수정합니다:
Trust relationships 탭. “Edit trust policy” 버튼을 클릭하여 정책을 수정합니다.
| 핵심 포인트: sts:SetContext 액션을 허용하도록 추가해야 사용자의 identity context를 role session에 추가해 TIP를 통해 다른 AWS 서비스로 전파되도록 할 수 있습니다. |
Inline Policy 추가 – S3 Access Grants
S3 Access Grants를 사용하기 위한 아래의 inline policy를 추가합니다. s3:GetDataAccess를 비롯한 Access Grants 관련 액션을 허용하고, S3 객체에 대한 직접 접근은 명시적으로 거부(Deny)하여 모든 데이터 접근이 Access Grants를 통해서만 이루어지도록 합니다.
주의: 아래 policy 내용은 예시를 위해서 “Resource”: “*” 로 표현하였으나, 실제 프로덕션 환경에서는 필요한 리소스만 명시해서 제한할 수 있도록 구체적인 리소스를 지정해서 사용하시기 바랍니다.
Policy name: S3AccessGrantsPermissions
Inline Policy 추가 – Lake Formation
그리고 Identity Center를 사용하는 Lake Formation 환경에서 사용하기 위한 권한도 추가해야 합니다.
주의: 아래 policy 내용은 예시를 위해서 “Resource”: “*” 로 표현하였으나, 실제 프로덕션 환경에서는 필요한 리소스만 명시해서 제한할 수 있도록 구체적인 리소스를 지정해서 사용하시기 바랍니다.
Policy name: lakeformation-idc
SageMaker Studio Domain 생성
SageMaker Studio Domain은 데이터 과학 팀이 협업하는 공유 환경입니다. TIP를 활성화하면 Domain 내 모든 사용자의 작업을 개별적으로 추적할 수 있습니다.
SageMaker Console 접속
SageMaker Console에서 Domains > Create domain을 선택합니다.
Amazon SageMaker AI 콘솔의 Domains 화면. “Create domain” 버튼을 클릭합니다.
“Set up for organizations”를 선택합니다. 그래야만 IdC를 사용할 수 있습니다.
Set up SageMaker domain 화면. “Set up for organizations”를 선택합니다.
Domain name을 입력하고 인증 방법으로 “AWS Identity Center”를 선택합니다. 그리고 “Enable trusted identity propagation for all users on this domain” 옵션을 선택하여 TIP를 활성화하고, 화면 하단에서 TIP가 지원되지 않는 SageMaker 기능 목록도 확인해 둡니다.
Set up domain details and users 화면. TIP 활성화 옵션을 선택하고 TIP 미지원 기능 목록을 확인합니다.
Default execution role로는 앞 단계에서 생성한 Role을 선택합니다.
Configure roles and ML activities 화면. Default execution role로 “SageMakerExecutionRoleForTIP”를 선택합니다.
아래 단계는 default로 두고 진행합니다.
Configure applications 화면. SageMaker Studio, JupyterLab, Canvas, RStudio, Code Editor, MLflow 등의 옵션을 확인할 수 있습니다.
다음 단계도 UI에 해당하는 부분이어서 default로 두고 진행합니다.
Customize the Studio user interface 화면. 기본값을 유지합니다.
네트워크 설정
VPC, Subnet, Security Group을 선택합니다.
테스트의 용이성을 위해서 “Public internet access”를 활성화하여 진행합니다.
VPC, Subnet, Security Group 선택 화면.
Storage 설정
Configure storage 화면에서는 기본값을 유지하고 다음으로 진행합니다.
Domain 생성 완료
Submit을 클릭하여 Domain을 생성합니다 (약 2분 소요).
생성되고 나면, Domain detail 화면을 통해서 현재 사용하는 role이 기존에 생성해서 지정한 role로 지정되었는지를 검토합니다.
Domain details 화면. Default execution role과 Space execution role이 지정한 role로 설정된 것을 확인합니다.
Identity Center 사용자 할당
- Assign users를 클릭합니다.
- 검색창에서 이전에 생성한 사용자(emma)를 찾아 선택합니다.
- Assign users and groups를 클릭하여 할당을 완료합니다.
아래와 같이 User profile로 추가된 사항을 확인할 수 있습니다.
S3 Access Grants 설정
S3 Access Grants는 버킷 정책이나 IAM policy에 사용자를 일일이 나열하지 않고도 사용자별로 세밀한 S3 접근 권한을 부여할 수 있는 기능입니다. Instance 생성, Location 등록, Grant 부여의 3단계로 설정하며, 각 사용자에게 임시 자격증명을 발급하여 S3 데이터에 접근할 수 있도록 합니다.
S3 Access Grants Execution Role 생성
S3 Access Grants Execution Role은 S3 Access Grants가 사용자 요청을 대신 수행하여, 승인된 범위 내에서 S3 데이터에 안전하게 접근할 수 있도록 위임된 권한을 제공하기 위해 생성합니다.
IAM 콘솔에서 “Custom trust policy” 방식으로 role 생성을 진행합니다.
IAM Role 생성 화면. “Custom trust policy”를 선택하고 access-grants.s3.amazonaws.com을 Principal로 하는 trust policy를 입력합니다.
Custom trust policy에는 아래 내용으로 작성합니다.
“Add permissions” 화면에서 AmazonS3FullAccess 권한을 지정합니다.
S3AGRoleForTIP 이름으로 role을 생성합니다.
Role naming 화면. Role name에 “S3AGRoleForTIP“를 입력합니다.
S3 Access Grants instance 생성
S3 Access Grants는 아래와 같이 S3 console을 통해서 생성할 수 있습니다.
S3 Console에서 Access Grants 메뉴로 이동합니다.
Create Access Grants instance를 클릭합니다.
S3 Access Grants 워크플로우. Step 1: Create S3 Access Grants instance → Step 2: Register S3 buckets or prefixes as locations → Step 3: Create grants
IAM Identity Center 사용 옵션을 선택하고 IdC instance ARN을 입력합니다.
Create S3 Access Grants instance 화면. IAM Identity Center instance ARN을 입력하여 IdC와 연동합니다.
Scope은 “Browse S3″를 통해서 사용하려는 S3를 지정합니다.
그리고 Role은 이전 스텝에서 만든 S3 AG Role을 지정합니다.
Register S3 buckets or prefixes as locations 화면. location scope와 IAM role(S3AGRoleForTIP)을 지정합니다.
사용하려는 S3 location의 경로(path), 권한, user ID를 아래와 같이 입력합니다.
그리고 Grantee type도 Directory가 되어야 합니다.
Create grant 화면. 권한(Read/Write), Grantee type(Directory identity from IAM Identity Center), 사용자의 user ID를 지정합니다.
입력 내용을 검토하고 Finish를 클릭하여 완료합니다.
Review and finish 화면. instance, location, grant 구성을 최종 확인하고 Finish를 클릭합니다.
그러면 아래와 같이 grants가 생깁니다.
생성 완료된 S3 Access Grants instance. Grants 목록에서 emma의 user ID로 부여된 grant를 확인할 수 있습니다.
테스트 데이터 준비
Lake Formation과 Athena에서 사용할 샘플 데이터를 준비합니다. 간단한 직원 정보 CSV 파일을 S3에 업로드하고, Athena를 통해 테이블을 생성합니다.
샘플 데이터 생성
로컬에서 다음 내용으로 employees.csv 파일을 생성합니다:
|
id,name,department,salary,region 1,Alice,Finance,120000,KR 2,Bob,Engineering,110000,US 3,Charlie,Finance,130000,KR 4,David,HR,90000,JP 5,Eva,Engineering,115000,US |
S3에 업로드
S3 버킷에 employees 폴더를 생성합니다 (예: s3://glue-table-test-{account-id}/employees/)
employees.csv 파일을 업로드합니다.
Athena에서 데이터베이스 및 테이블 생성
Athena Console에서 다음 쿼리를 실행하여 테스트 테이블을 생성합니다.
Athena에서 쿼리를 수행하여 테이블이 정상적으로 생성되고 데이터가 조회되는지 확인합니다.
Athena Query editor에서 employees 테이블 조회 결과. 5개 행이 정상적으로 조회됩니다.
Lake Formation 권한
Lake Formation은 AWS Glue Data Catalog에 대한 세밀한 접근 제어를 제공합니다. 데이터베이스, 테이블, 컬럼, 행 수준에서 권한을 관리할 수 있으며, IAM Identity Center와 통합하여 TIP 사용자에게 권한을 부여합니다.
Lake Formation 관리자 권한 설정
Lake Formation Console로 이동합니다.
처음 Lake Formation에 접속하는 경우, 아래와 같이 현재 AWS 사용자가 Lake Formation의 관리자 권한을 부여받도록 설정하며 시작합니다.
“Welcome to Lake Formation” 다이얼로그. “Add myself”를 선택하여 현재 사용자를 데이터 레이크 관리자로 지정합니다.
Lake Formation Identity Center 사용 설정
아래 “IAM Identity Center Integration” 메뉴를 통해서 설정합니다.
해당 메뉴에서 “Create” 버튼만 눌러서 수행합니다.
생성하고 나면, 아래와 같이 IAM Identity Center Integration 화면이 보입니다.
Default 메뉴를 통해서 생성된 경우에는 아래와 같이, IAM Identity Center instance ARN에 IdC의 ARN이 보이게 됩니다.
IAM Identity Center integration 상세 화면. Integration status가 “Success”로 표시됩니다.
Location Role 생성
데이터가 저장된 S3 경로를 Lake Formation으로 관리하려면, 해당 경로를 data lake location으로 등록해야 합니다. 등록 시에는 Lake Formation이 S3에 접근할 때 사용할 IAM role을 함께 지정합니다. 먼저 이 role부터 생성해 보겠습니다.
IAM으로 이동합니다.
그리고 “Custom trust policy” 방식으로 role 생성을 진행합니다.
IAM Role 생성 화면에서 “Custom trust policy” 방식을 선택합니다.
그리고 Lakeformation-location-role 이라는 이름으로 Role을 생성합니다.
Custom Trust policy를 아래와 같이 작성합니다.
아래와 같이 AmazonS3FullAccess와 AWSLakeFormationDataAdmin 두 개의 Managed policy를 Role에 추가합니다.
생성된 Lakeformation-location-role의 Permissions 탭. AmazonS3FullAccess, AWSLakeFormationDataAdmin, PassRolePermissions 정책이 연결되어 있습니다.
PassRolePermissions Inline policy를 추가합니다.
Location 등록
Lake formation console UI에서 Administration 메뉴 아래의 “Data lake locations”를 클릭합니다.
Register location을 클릭합니다.
여기에서 사용할 S3 위치를 지정하고, 위에서 생성한 Lakeformation-location-role을 IAM role로 지정합니다.
Register location를 클릭하여 location을 생성합니다.
Location 권한 등록
Lake location에 대한 사용권한 등록은 Permissions > Data location 메뉴를 통해서 진행합니다.
이 메뉴에서 “Grant”를 클릭합니다.
Grant permissions 다이얼로그. 대상 계정(My account), SageMakerExecutionRoleForTIP, 등록한 storage location을 지정하고 Grant를 클릭합니다.
권한 부여가 완료되면 Data locations 목록에서 SageMakerExecutionRoleForTIP 항목을 확인할 수 있습니다.
테이블 사용 권한 부여
이제 Lake Formation의 Identity Center 권한 부여 기능을 활용해서 위에서 생성된 테이블에 대해서, IdC의 emma 라는 유저가 해당 테이블에 대해서 권한을 가질 수 있도록 권한을 부여해 줄 수 있습니다.
Lake formation 메뉴에서 “Permissions” > “Data Permissions”를 선택합니다.
여기에서, “Grant” 버튼을 클릭합니다.
Permissions > Data permissions 화면. “Grant” 버튼을 클릭합니다.
아래 메뉴에서 “Principals”를 선택합니다.
“IAM Identity Center”를 선택합니다.
그리고 “Add users and Groups”를 클릭합니다.
Grant permissions 화면. Principals에서 “IAM Identity Center”를 선택합니다.
여기에서 위에서 생성한 emma를 검색해서 선택합니다.
Assign users and groups 다이얼로그에서 emma를 검색하여 선택합니다.
그러면 아래와 같이 사용자가 추가된 것을 알 수 있습니다.
emma가 Principal로 추가된 모습.
아래와 같이 위에서 생성한 테이블에 해당하는 권한을 추가합니다.
Named Data Catalog resources에서 lf_demo 데이터베이스의 employees 테이블을 선택하고 Table permissions를 지정합니다.
Athena Workgroup 생성
Athena Workgroup은 쿼리 실행 환경을 격리하고 비용을 추적하는 데 사용됩니다. TIP를 지원하려면 Workgroup의 Authentication을 “IAM Identity Center”로 설정해야 합니다.
Athena Workgroup 생성
Athena Console에서 Workgroups > Create workgroup을 선택합니다.
Create workgroup 화면. Workgroup name에 “tip-workgroup”을 입력합니다.
Authentication에서 “AWS IAM Identity Center”를 선택합니다. Athena가 IdC에 접근하기 위한 서비스 role이 함께 생성됩니다.
그리고 아래와 같이 쿼리 결과를 저장할 S3 경로를 지정합니다. Query result location 경로 끝에는 “/”를 반드시 포함하세요.
이때, S3 bucket은 S3 Access Grants를 통해서 권한이 지정된 버킷을 사용하도록 지정해야 합니다.
위의 세팅에서 만든 버킷을 사용해야 하며, 그렇지 않은 경우 일반 버킷으로 지정하면 권한 부족으로 에러가 발생합니다.
Query result configuration 화면. “Customer managed”를 선택하고 S3 Access Grants로 권한을 지정한 버킷 경로를 입력합니다. IdC 인증 workgroup에서는 “Enable S3 Access Grants”가 기본으로 활성화됩니다.
사용자 할당
이제 생성된 Workgroup을 사용할 수 있는 사용자를 지정해야 합니다.
생성된 tip-workgroup을 선택합니다.
그리고 “Users” 탭을 선택합니다.
그리고 “Assign Users”를 클릭합니다.
tip-workgroup 상세 화면. Authentication이 “AWS IAM Identity Center”로 설정된 것을 확인하고 Users 탭에서 “Assign users”를 클릭합니다.
Assign users 다이얼로그에서 emma를 선택해 할당합니다.
emma가 tip-workgroup 사용자로 할당되었습니다.
SageMaker Studio Notebook을 통해서 쿼리 수행
SageMaker Studio는 데이터 과학자가 실제로 작업하는 환경입니다. JupyterLab 노트북에서 Python 코드를 통해 S3 Access Grants와 Athena에 접근하고, TIP를 통해 사용자 ID가 전파되는 것을 확인합니다.
SageMaker Studio 접속
- SageMaker Console에서 생성한 Domain을 선택합니다.
- 할당된 사용자(emma)를 선택하고Open Studio를 클릭합니다.
SageMaker Dashboard에서 사용자 프로필을 선택하고 “Open Studio” 버튼을 클릭합니다.
SSO 로그인 화면을 통해서 로그인을 수행합니다.
Studio 실행 화면. 로그인 완료 후 브라우저가 Studio 환경으로 리다이렉트됩니다.
그리고 JupyterLab 노트북 환경을 생성합니다.
Jupyter notebook을 사용할 수 있는 JupyterLab을 생성합니다.
그런 다음 Python 3 커널의 노트북을 생성합니다.
Athena 쿼리 실행
PyAthena 라이브러리를 설치하고 쿼리를 실행합니다:
예상 결과:
|
id name department salary region 0 1 Alice Finance 120000 KR 1 3 Charlie Finance 130000 KR |
CloudTrail에서 로그 확인
TIP의 핵심 가치는 CloudTrail 로그에서 실제 사용자 ID를 추적할 수 있다는 점입니다. CloudTrail 로그 내에서 onBehalfOf 필드를 통해 어떤 사용자가 어떤 데이터에 접근했는지 완전하게 감사할 수 있습니다.
S3 GetDataAccess 이벤트 확인
- CloudTrail Console에서 Event history로 이동합니다.
- Event name으로 GetDataAccess를 검색합니다.
해당 이벤트를 선택하여 상세 내용을 확인합니다.
Event history 목록에서 GetDataAccess 이벤트를 확인할 수 있습니다.
TIP가 활성화된 경우의 로그
아래와 같이 Trail log를 확인할 수 있으며, userIdentity 항목 내의 onBehalfOf 항목을 통해서 user ID를 확인할 수 있습니다. 또한, 어느 대상 S3 객체에 대해 어떤 권한이 요청되었는지도 requestParameters 항목을 통해 확인 가능합니다.
TIP가 없는 경우와의 비교
TIP가 활성화되지 않은 경우, CloudTrail 로그의 userIdentity 항목 내에는 onBehalfOf 필드가 없으며 Role ARN만 기록되어 실제 사용자를 식별할 수 없습니다.
| 항목 | TIP 미사용 | TIP 사용 |
| Role ARN | ✓ 기록됨 | ✓ 기록됨 |
| onBehalfOf | ✗ 없음 | ✓ 사용자 ID 기록 |
| 사용자 식별 | ✗ 불가능 | ✓ 가능 |
| 감사 추적 | ✗ 불완전 | ✓ 완전 |
| 규정 준수 | ✗ 어려움 | ✓ 용이 |
리소스 정리
테스트를 마친 후 불필요한 과금과 권한 잔존을 방지하기 위해 생성한 리소스를 정리합니다.
- SageMaker Studio: 실행 중인 JupyterLab space를 중지하고, User profile과 Domain을 삭제합니다.
- Athena: tip-workgroup을 삭제합니다.
- Lake Formation: 부여한 Data permissions, data lake location 등록, IAM Identity Center integration을 제거합니다.
- S3 Access Grants: Grant, Location, Access Grants instance를 순서대로 삭제합니다.
- S3: 테스트 버킷 2개(데이터, 쿼리 결과)를 비우고 삭제합니다.
- IAM: SageMakerExecutionRoleForTIP, S3AGRoleForTIP, Lakeformation-location-role을 삭제합니다.
- IAM Identity Center: 테스트 사용자(emma)를 삭제합니다. 조직에서 IdC를 계속 사용할 계획이 없는 경우에만 인스턴스를 비활성화합니다.
결론
이 블로그에서는 Amazon SageMaker Studio에서 Trusted Identity Propagation을 활용하여 S3 Access Grants 및 Lake Formation과 통합하고, Athena 쿼리를 실행하는 엔드투엔드 구현 방법을 스크린샷과 함께 살펴보았습니다.
핵심 요약
- TIP 활성화: SageMaker Studio Domain 생성 시 “Enable trusted identity propagation for all users on this domain” 옵션을 선택하고, Execution Role의 Trust Policy에 sts:SetContext를 추가합니다.
- 세밀한 권한 제어: S3 Access Grants와 Lake Formation을 조합하여 사용자별로 S3 객체와 데이터 카탈로그에 대한 세밀한 접근 권한을 부여합니다.
- 완전한 감사 추적: CloudTrail의 onBehalfOf 필드를 통해 실제 사용자 ID를 추적하여 규정 준수와 보안 감사를 용이하게 수행할 수 있습니다.
- 통합 아키텍처: IAM Identity Center, SageMaker TIP, S3 Access Grants, Lake Formation, Athena가 통합된 솔루션으로 엔터프라이즈급 보안 거버넌스를 구현합니다.
비즈니스 가치
- 보안 강화: 사용자별 최소 권한 원칙을 적용하여 데이터 유출 위험을 최소화합니다.
- 규정 준수: GDPR, HIPAA 등의 규정 준수 요구사항을 충족하는 완전한 감사 추적을 제공합니다.
- 운영 효율성: 단일 SageMaker Studio Domain에서 여러 사용자를 관리하여 인프라 복잡도와 비용을 절감합니다.
- 확장성: IAM Identity Center를 통한 중앙 집중식 ID 관리로 대규모 조직에도 쉽게 확장할 수 있습니다.
TIP는 데이터 과학 팀의 생산성을 유지하면서도 엔터프라이즈급 보안과 거버넌스를 구현할 수 있는 강력한 솔루션입니다. 이 가이드를 통해 여러분의 조직에서도 TIP를 성공적으로 구현하시기 바랍니다.

























































