메뉴 닫기

Amazon SageMaker에서 ABAC를 활용한 사용자 수준 접근 제어 구현 방법

기업용 머신러닝 환경에서 다중 사용자 및 팀이 Amazon SageMaker 플랫폼을 공유할 때 사용자 수준의 리소스 접근 제어는 효율적인 보안 운용의 핵심 과제 중 하나입니다. 특히 대규모 조직에서 단일 AWS 계정 내에 수백 개 이상의 세이지메이커 스튜디오 사용자가 존재할 경우, IAM 역할의 무분별한 증가 없이도 사용자별 접근 제한을 효과적으로 구현하는 방법이 필요합니다. 본 글에서는 사용자 속성 기반 접근 제어(Attribute-Based Access Control, ABAC)를 활용하여 Amazon SageMaker Studio에서 사용자 수준 접근 제어를 구현하는 방법을 단계별 배치 가이드로 소개합니다.

ABAC의 핵심 원리와 구성

ABAC는 IAM 정책에서 변수와 조건 키를 사용해 사용자의 속성에 기반한 세분화된 접근 제어를 가능하게 합니다. SageMaker Studio에서는 다음과 같은 두 가지 주요 컨텍스트 키를 제공합니다:

  • sagemaker:DomainId: 특정 도메인별로 리소스 접근을 제한
  • sagemaker:UserProfileName: 사용자 프로필 이름을 기반으로 개별 사용자의 리소스 접근을 제한

또한 SourceIdentity라는 개념을 활용하면 API 호출 시 사용자의 ID가 CloudTrail에 기록되어 효과적인 사용자 활동 추적과 감사(Audit)가 가능합니다.

ABAC 구조도와 리소스 접근 패턴을 설명하는 다이어그램

다중 테넌트 ML 플랫폼에서 자주 접하는 사용 사례

  1. SageMaker 리소스 접근 제어
    사용자가 생성한 트레이닝 작업, 모델, 엔드포인트 등에 접근하는 것을 제한하기 위해 사용자 프로필 기반의 IAM 정책을 적용할 수 있습니다. 예를 들어, 다음과 같이 사용자 자체 리소스만 Describe, Update, Stop할 수 있도록 정책을 정의할 수 있습니다:

{
"Sid": "AllowUserTrainingJobs",
"Effect": "Allow",
"Action": [
"sagemaker:DescribeTrainingJob",
"sagemaker:UpdateTrainingJob",
"sagemaker:StopTrainingJob"
],
"Resource": "arn:aws:sagemaker:::training-job/*",
"Condition": {
"StringLike": {
"sagemaker:ResourceTag/sagemaker:user-profile-arn": "arn:aws:sagemaker:::user-profile/${sagemaker:DomainId}/${sagemaker:UserProfileName}"
}
}
}

  1. Amazon S3 접근 제어
    각 사용자의 데이터는 S3 버킷 내 특정 폴더(prefix)에 저장되며, SourceIdentity를 활용하여 개별 사용자만 자신의 prefix에 접근하도록 제한할 수 있습니다. 다음은 예시 정책입니다:

{
"Sid": "LimitS3AccessToUserPrefix",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::my-bucket/my_domain/users/${aws:SourceIdentity}/*"
}

  1. Secrets Manager 연동
    사용자별로 분리된 비밀 키 저장소(secret path)를 생성하여 필요한 경우 자동으로 비밀번호나 토큰을 불러오도록 설정할 수 있습니다. IAM 정책 예시는 다음과 같습니다:

{
"Sid": "UserSpecificSecretAccess",
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws:secretsmanager:::secret:user-secrets/${aws:SourceIdentity}/*"
}

이처럼 소스 아이덴티티(SourceIdentity)는 IAM 정책 변수 내에서 사용되어 다중 사용자인 환경에서도 효율적인 권한 제어 및 감사 로그 확보가 가능합니다.

  1. Amazon EMR 클러스터 접근 제어
    SageMaker Studio 사용자가 Amazon EMR 클러스터에 접근할 때, 클러스터가 사용자 이름으로 태깅되어 있어야만 접근이 가능하도록 제한할 수 있습니다. 이런 설정은 MLOps 환경에서 역할 분리를 강화하고 잘못된 데이터 접근을 방지하는데 유용합니다.

  2. 공용 파일 시스템(EFS, FSx) 기반 SageMaker 트레이닝 작업 제어
    SageMaker 트레이닝 작업에서 공용 파일 시스템을 사용하는 경우, 사용자가 본인의 전용 디렉터리(/fsx/users/${aws:SourceIdentity})만 접근하도록 제한하여 작업 간 데이터 충돌이나 덮어쓰기를 방지할 수 있습니다.

  3. AWS Glue 및 Amazon Athena/Amazon EMR을 통한 데이터 카탈로그 접근 기록 추적
    사용자가 Athena 또는 EMR에서 SageMaker Studio를 통해 Glue 데이터 카탈로그에 SELECT 쿼리를 수행하면, 해당 정보는 CloudTrail에 sourceIdentity와 함께 기록되어 개별 사용자 단위로 데이터 접근 상황을 추적 가능합니다.

관리 자동화 및 보안 권장 사항

  • 태그 기반 권한 부여 정책의 조건 키들과 IAM 변수의 일관된 네이밍 규칙을 유지해야 하며, 이를 통해 정책 자동화를 실현할 수 있습니다.
  • sagemaker:AddTags, sts:SetSourceIdentity 권한은 사전에 설정되어야 하며, 도메인 수준에서 sourceIdentity가 활성화되어야 합니다.
  • CloudTrail 로그의 sourceIdentity 필드를 주기적으로 리뷰함으로써 보안 감사를 자동화하고 사용자별 리소스 접근을 효과적으로 모니터링할 수 있습니다.
  • 최소 권한의 원칙(Least Privilege Principle)을 따른 권한 설정은 IAM 보안의 기본 중 기본입니다.

결론

Amazon SageMaker AI 환경에서 사용자 수준의 ABAC 구현은 확장성 있는 보안 정책 관리의 실현과 동시에 감사 투명성을 높이는 전략입니다. 사용자 단위의 리소스 접근 자동화와 IAM 역할 증가 억제를 동시에 달성할 수 있으며, 주요 AWS 서비스들(SageMaker, S3, Secrets Manager, EMR, Glue 등)과의 통합 활용에도 유용합니다. SageMaker Studio에서 이러한 접근 제어 방식을 도입하면, 공통 실행 역할이라는 유연함 속에서도 철저한 권한 분리를 유지하며 보안을 강화할 수 있습니다.

https://aws.amazon.com/blogs/machine-learning/implement-user-level-access-control-for-multi-tenant-ml-platforms-on-amazon-sagemaker-ai/

AI, Cloud 관련한 문의는 아래 연락처로 연락주세요!

(주)에이클라우드
이메일 : acloud@a-cloud.co.kr
회사 번호 : 02-538-3988
회사 홈페이지 : https://www.a-cloud.co.kr/
문의하기


AI, Cloud 도입 상담 배너