가끔 보자, 하늘.

AWS Cognito 자격 증명 풀의 액세스 제어 관련 속성 상세 본문

개발 이야기/인프라 구축 및 운영

AWS Cognito 자격 증명 풀의 액세스 제어 관련 속성 상세

가온아 2025. 9. 28. 19:39

액세스 제어 관련 속성은 Amazon Cognito Identity Pool의 ABAC(Attribute-Based Access Control) 기능입니다.

액세스 제어 관련 속성이란?

사용자의 속성(attributes)을 기반으로 AWS 리소스에 대한 접근 권한을 세밀하게 제어하는 기능입니다.

작동 원리:

  1. 속성 매핑: 사용자 토큰의 속성을 IAM 정책의 태그로 매핑
  2. 세션 태그: 사용자 세션에 태그를 자동으로 할당
  3. 조건부 접근: IAM 정책에서 이 태그들을 조건으로 사용하여 접근 제어

사용 사례:

1. 부서별 접근 제어

// 사용자 토큰에서 department 속성을 추출
{
"department": "legal",
"clearance": "confidential"
}
 
// IAM 정책에서 조건 사용
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::company-${aws:PrincipalTag/department}/*",
"Condition": {
"StringEquals": {
"s3:ExistingObjectTag/classification": "${aws:PrincipalTag/clearance}"
}
}
}
 

2. 멀티테넌트 애플리케이션

  • 각 테넌트의 사용자가 자신의 테넌트 데이터에만 접근
  • 사용자 속성: 
    tenant_id: "company-a"
  • S3 버킷: 
    s3://app-data/company-a/

3. 역할 기반 접근

  • 사용자 속성: 
    role: "manager"
    , 
    team: "sales"
  • 매니저는 자신 팀의 모든 데이터 접근 가능
  • 일반 직원은 개인 데이터만 접근 가능

설정 방법:

기본 매핑 사용:

  • sub
     → 사용자 ID
  • aud
     → 클라이언트 ID
  • amr
     → 인증 방법
  • iss
     → 발급자

커스텀 매핑:

  • Google: 
    email
    , 
    name
    , 
    picture
  • Facebook: 
    id
    , 
    name
    , 
    email
  • 커스텀 속성: 
    custom:department
    , 
    custom:role

언제 사용하나?

사용해야 하는 경우:

  1. 세밀한 권한 제어가 필요한 경우
  2. 멀티테넌트 애플리케이션
  3. 부서/팀별 데이터 분리가 필요한 경우
  4. 동적 권한 할당이 필요한 경우
  5. 규정 준수를 위한 접근 제어가 필요한 경우

사용하지 않아도 되는 경우:

  1. 모든 사용자가 동일한 권한을 가지는 경우
  2. 단순한 인증만 필요한 경우
  3. 정적 역할만으로 충분한 경우

장점:

  1. 효율적인 권한 관리: 적은 수의 정책으로 복잡한 권한 제어
  2. 동적 확장: 새로운 사용자/리소스 추가 시 자동으로 권한 적용
  3. 세밀한 제어: 사용자별, 속성별 세밀한 접근 제어
  4. 감사 추적: CloudTrail에서 사용자 속성 기반 활동 추적 가능

결론: 복잡한 권한 구조나 멀티테넌트 환경에서 매우 유용하며, 단순한 애플리케이션에서는 오버엔지니어링이 될 수 있습니다.

반응형