Skip to content

Part 4: Domain, Project, Membership 거버넌스

문서 검토: 2026-09-12. Qwen provisioning 결과는 과거 실험 기록이며 현재 계정 상태를 재검증하지 않았습니다.

Qwen 실험 기록의 세 번째 시도는 project 생성 후 caller의 membership 문제로 조회·삭제가 거부되었다고 보고합니다. 학습은 시작되지 않았습니다. 이 사례를 모든 Unified Studio domain의 현재 상태나 모든 권한 실패의 유일한 원인으로 일반화하지 않습니다.

1. 객체와 identity를 구분

객체/역할의미
Unified domain / domain unit거버넌스 경계와 내부 조직 계층
Project profile / blueprint도구·environment provision 구성과 허용된 account/region
Project협업·도구·자원 공유 경계
User/group profileSSO identity 또는 등록된 IAM role 등의 서비스 내부 표현
Membership designationPROJECT_OWNER, PROJECT_CONTRIBUTOR 등 project 관리 범위
Project execution roleProject에서 AWS 데이터·compute에 접근하는 실행 identity
Catalog asset설명·schema·location 등 거버넌스 대상 메타데이터

IAM-based와 Identity Center-based domain의 설정·로그인 방식을 먼저 확인합니다. Project member role과 execution role은 역할이 다르며 실제 ARN이 같을 수도 있습니다. IAM-based project에서는 멤버들이 project execution role을 통한 데이터/compute 접근을 공유합니다. Owner designation만으로 사용자별 데이터 권한이 자동 분리되지 않습니다. Identity-based 접근이나 Trusted Identity Propagation을 쓰면 해당 모델도 함께 검증합니다.

AWS user-management 문서는 domain에 추가된 IAM role의 group profile과, 그 role을 통해 로그인한 사용자의 session user profile을 구분합니다. Membership은 role group profile로 관리할 수 있으며 rolePrincipalARN을 사용한 CreateGroupProfile은 profile 등록이지 IAM role 자체를 만드는 API가 아닙니다. Project execution role의 자동 profile/membership 처리와 automation caller의 권한도 동일하다고 가정하지 않습니다.

2. Profile 이름은 도구 준비 상태가 아님

All capabilities는 blueprint 묶음의 template 이름입니다. Profile은 blueprint를 project 생성 때 provision하거나 나중에 on-demand로 활성화하도록 설정할 수 있습니다. 필요한 service·account·region·network와 profile 사용 권한을 확인합니다.

프로필 이름으로 처음 검색된 결과만 선택하지 말고 의도한 profile ID와 설정을 확인합니다. Qwen 실험에 필요한 범위가 작다면 필요한 capability만 제공하는 profile을 검토할 수 있지만, 조직의 승인된 구성과 실제 의존성을 먼저 확인합니다. Unified Studio project가 없는 일반 SageMaker/EKS 학습 경로와도 구분합니다.

3. IAM, membership, 데이터 권한

IAM action 허용은 서비스 내부 project ownership을 대신하지 않습니다. 반대로 project owner라도 IAM·SCP·resource policy·데이터 접근 정책의 제한을 무시할 수 없습니다. 일반 member/contributor라는 이유만으로 삭제할 수 있는 것도 아닙니다. 삭제 경로에 필요한 project owner 또는 관리 권한을 확인합니다.

현재 CreateProject API는 membershipAssignments를 받습니다. 다음은 요청 구조 예시이며 domain/profile/group ID를 권한 있게 조회한 실제 값으로 바꿔야 합니다.

json
{
  "domainIdentifier": "dzd-1111111111111111",
  "name": "docs-governance-example",
  "projectProfileId": "c1111111111111",
  "membershipAssignments": [
    {
      "member": {
        "groupIdentifier": "11111111-1111-1111-1111-111111111111"
      },
      "designation": "PROJECT_OWNER"
    }
  ]
}

member는 tagged union이므로 groupIdentifier와 userIdentifier 중 하나만 넣습니다. 같은 요청에 membership을 포함하면 별도 후속 요청이 실패하는 간극을 줄일 수 있지만, 전체 project/environment provision의 transaction 원자성·rollback을 보장한다는 뜻은 아닙니다. CreateProject 응답과 실제 membership을 다시 확인합니다. Timeout 뒤 이름만 보고 새 project를 반복 생성하지 말고 기존 요청의 결과와 inventory를 먼저 확인합니다.

4. 생성·도구 준비 순서

  1. 의도한 account/region/domain 유형과 profile ID를 확인합니다.
  2. Caller login/profile, 필요한 owner/admin 및 execution-role 권한을 구분합니다.
  3. 필요한 blueprint가 on-create인지 on-demand인지 확인하고 승인된 구성을 준비합니다.
  4. CreateProject와 membership 결과를 저장·재조회합니다.
  5. projectStatus와 environmentDeploymentDetails를 따로 확인합니다.
  6. 필요한 environment/tool의 준비, 실제 read/write 권한을 확인한 뒤 다음 compute 단계를 진행합니다.

projectStatus=ACTIVE는 environment/tool이 전부 준비됐다는 뜻이 아닙니다. overallDeploymentStatus에는 PENDING_DEPLOYMENT, IN_PROGRESS, SUCCESSFUL, FAILED_VALIDATION, FAILED_DEPLOYMENT 등이 있습니다. On-demand로 의도적으로 아직 만들지 않은 도구까지 모두 실패로 취급하지 말고 이번 작업에 필요한 것을 확인합니다.

5. Tag 오류와 catalog 공개 범위

현재 API에는 resourceTags가 있습니다. 과거 실험의 tag 거부는 그 domain/요청의 실패 기록이며 “Unified Studio는 tag를 지원하지 않는다”는 뜻이 아닙니다. 실제 정책·값·원본 오류를 확인하고, 부분 실패 정리는 inventory에서 이번 실행이 생성했고 정리 권한이 있는 자원으로 한정합니다. Shared bucket/role을 prefix만 보고 일괄 삭제하는 근거로 사용하지 않습니다.

공개 문서에는 실험 횟수, 합성 데이터 schema·레코드 수, generator version/seed/hash, 소유·보존 원칙 같은 검토에 필요한 정보를 싣습니다. 실제 PII, credential, presigned URL 또는 재식별용 mapping을 공개 산출물에 넣지 않습니다.

권한 통제된 내부 catalog에서는 데이터 발견/접근을 위해 storage location과 resource identifier가 필요할 수 있습니다. 공개 웹 문서의 식별자 비공개 원칙을 내부 catalog의 모든 location metadata 금지로 일반화하지 않습니다. Metadata 공개, subscription 승인과 실제 데이터 권한 부여도 별도 단계입니다.

6. 삭제와 부재 검증

  1. 보존할 데이터와 이번 실행의 소유 자원·의존성을 확인합니다.
  2. 권한 있는 owner/admin context에서 해당 project의 작업을 중단하고 정리 범위를 확정합니다.
  3. Project와 연결된 environment·managed 자원의 lifecycle에 맞춰 삭제합니다.
  4. DELETING/DELETE_FAILED 등 상태와 오류를 확인하고 완료를 재검증합니다.
  5. 관련 account/region에서 남는 외부 App·S3·IAM·compute 자원을 inventory와 대조합니다.

GetProject의 AccessDenied는 부재 증거가 아닙니다. 빈 ListProjects 결과도 visibility·filter·pagination이 제한되어 있으면 충분하지 않습니다. 의도한 domain/identity와 모든 page를 확인하고, 권한 있는 get/list 결과 및 외부 자원 inventory를 함께 사용합니다. Project 삭제가 외부 서비스 자원까지 모두 정리한다는 보장은 없으므로 데이터 보존과 소유권에 맞춰 별도 확인합니다.

7. Qwen 실험의 역사적 검증 범위

저장된 validation JSON의 날짜는 2026-09-01입니다. 기록에는 세 번 모두 trainingStarted=false, 세 번째 뒤 project 1개 잔존, App/S3/IAM 실험 자원 정리가 담겨 있습니다. 9월 2일 문서는 당시 ACTIVE 재확인을 보고합니다. 이 장의 검토는 그 기록과 현재 공개 API 문서를 대조한 것이며, 현재 account에서 project가 존재·삭제되었는지 확인한 결과는 아닙니다.

재개 시에는 최신 inventory와 ownership을 다시 확인해야 합니다. 이 문서 수정 과정에서 project·membership·IAM·GPU 자원을 생성하거나 삭제하지 않았습니다. 요청 예시는 AWS CLI의 로컬 output-skeleton 검증으로 구조를 검사했고, member에 두 identity 종류를 함께 넣은 변형은 ParameterValidation으로 거부됐습니다. 실제 API authorization이나 environment provision 성공으로 해석하지 않습니다.

참고 자료

Previous: SageMaker AI / MLflow

Next: Validation results

Quiz