

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 역할 관리자 가용성 변경
<a name="role-manager-availability-change"></a>

**참고**  
Amazon SageMaker 역할 관리자는 더 이상 신규 고객에게 공개되지 않습니다. 기존 고객은 서비스를 정상적으로 계속 사용할 수 있습니다. AWS 역할 관리자의 보안 및 가용성 개선에 계속 투자하지만 새로운 기능을 도입할 계획은 없습니다.

## IAM 네이티브 도구, IAM Identity Center 및 infrastructure-as-code
<a name="role-manager-replacement-overview"></a>

 AWS IAM 네이티브 역할 생성 AWS IAM Identity Center과 Infrastructure-as-Code(CloudFormation, CDK)의 조합은 페르소나 기반 역할 생성 및 활동 기반 권한 범위 지정 전반에서 핵심 기능을 다루어 Amazon SageMaker 역할 관리자의 대체 역할을 합니다.

AWS IAM 네이티브 도구는 `sagemaker.amazonaws.com` 서비스 보안 주체 신뢰 정책으로 역할을 생성하고 관리형 또는 사용자 지정 정책을 연결하여 IAM 콘솔, CLI 또는 SDK를 통해 실행 역할 생성을 처리합니다.

AWS IAM Identity Center 는 SageMaker 리소스에 대한 세분화된 액세스를 정의하는 권한 세트를 제공하여 인력 자격 증명 및 중앙 집중식 액세스 관리를 처리하고 외부 자격 증명 공급자(Okta, Azure AD, Ping Identity)의 페더레이션 자격 증명과 SageMaker Studio를 통한 신뢰할 수 있는 자격 증명 전파를 활성화합니다.

IAM Access Analyzer는 실제 CloudTrail 액세스 패턴을 분석하고 세분화된 정책을 권장하고 Role Manager의 정적 활동 기반 템플릿을 사용량 기반 정책 권장 사항으로 대체하여 동적 정책 검증 및 최소 권한 정책 생성을 제공합니다.

반복 가능한 거버넌스 CloudFormation 를 위해 CDK 템플릿은 엔터프라이즈 CI/CD 파이프라인 및 보안 검토 프로세스와 통합되는 버전 제어, 감사 및 반복 가능한 IAM 역할 정의를 제공합니다.

## 역할 관리자 교체
<a name="role-manager-replacing"></a>

워크플로에 SageMaker AI 콘솔(관리자 구성 > 역할 관리자 > 역할 생성)로 이동하거나 도메인, 노트북, 훈련 작업 또는 추론 모델 생성 중에 "역할 생성 마법사를 사용하여 역할 생성" 옵션을 사용하는 것이 포함된 경우 아래 대체 구성 섹션에 설명된 대체 경로를 사용합니다.

### 기존 역할에는 정리가 필요하지 않음
<a name="role-manager-no-cleanup"></a>

이전에 Role Manager에서 생성한 IAM 역할은 표준 IAM 역할입니다. 역할 관리자별 런타임 종속성 없이 독립적으로 계속 작동합니다. 이러한 역할은 다음과 같습니다.
+ `sagemaker-` 접두사가 있는 표준 IAM 역할로 IAM 콘솔에 표시
+ IAM 콘솔에서 직접 보거나 수정하거나 삭제할 수 있습니다.
+ 신뢰 정책 및 권한 정책이 온전하고 작동하도록 합니다.
+ 이 전환의 일부로 변환, 마이그레이션 또는 삭제가 필요하지 않음

### CDK Role Manager 구문 바꾸기(사용된 경우)
<a name="role-manager-replace-cdk"></a>

`@aws-cdk/aws-sagemaker-alpha` 역할 관리자 CDK 구문( `Persona` 및 `Activity` 클래스)을 사용한 경우 표준 `aws-cdk-lib/aws-iam` 구문으로 바꿉니다. 대체 패턴은 아래 Infrastructure-as-Code 섹션을 참조하세요.

### Studio 도메인 생성 흐름 교체
<a name="role-manager-studio-domain-flow"></a>

SageMaker AI 도메인을 생성할 때 온보딩 마법사("역할 생성 마법사를 사용하여 역할 생성") 중에 실행 역할을 생성하는 옵션으로 역할 관리자가 제공되었습니다. 아래 대안을 따릅니다.

#### IAM 콘솔 역할 생성을 사용한 사용자 지정 도메인 설정
<a name="role-manager-custom-domain-iam"></a>

사용자 지정 도메인을 생성하는 동안 Role Manager를 사용하는 대신 IAM 콘솔에서 직접 실행 역할을 생성할 수 있습니다.

**1단계: IAM에서 실행 역할 생성**

1. IAM 콘솔(https://console.aws.amazon.com/iam/)을 엽니다.

1. **역할**을 선택한 다음, **역할 생성**을 선택합니다.

1. **AWS 서비스를** 신뢰할 수 있는 엔터티 유형으로 유지합니다.

1. "다른 AWS 서비스의 사용 사례"에서 **SageMaker AI**를 찾아 선택합니다.

1. **SageMaker AI – 실행**을 선택한 **후 다음을** 선택합니다.

1. `AmazonSageMakerFullAccess` 관리형 정책은 자동으로 연결됩니다. **다음**을 선택합니다.

1. **역할 이름**(예: `AmazonSageMaker-ExecutionRole-CustomDomain`)과 **설명을** 입력합니다.

1. (선택 사항) 거버넌스 및 추적을 위한 태그를 추가합니다.

1. **역할 생성을** 선택하고 역할 ARN을 기록해 둡니다.

**2단계: 도메인 생성 중에 역할 사용**

1. SageMaker AI 콘솔에서 **관리 구성** > **도메인** > **도메인 생성을** 선택합니다.

1. **조직에 대한 설정(사용자 지정 설정)을** 선택합니다.

1. **실행 역할**에서 **사용자 지정 IAM 역할 ARN 입력을** 선택하고 1단계의 ARN을 붙여넣습니다.

1. 나머지 도메인 구성 단계를 완료합니다.

자세한 지침은 [ SageMaker AI 실행 역할을 사용하는 방법을](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html) 참조하세요.

#### AWS 관리형 정책을 직접 사용
<a name="role-manager-managed-policies"></a>

AWS 는 일반적인 SageMaker 활동을 다루는 관리형 정책을 제공합니다. IAM 실행 역할에 직접 연결합니다.


| 사용 사례: | AWS 연결할 관리형 정책 | 
| --- | --- | 
| 일반 ML 개발(데이터 과학자 동등) | AmazonSageMakerFullAccess | 
| 모니터링/감사를 위한 읽기 전용 액세스 | AmazonSageMakerReadOnly | 
| Canvas 사용자 | AmazonSageMakerCanvasFullAccess \+ AmazonSageMakerCanvasAIServicesAccess | 
| 파이프라인 작업(MLOps에 상응하는 작업) | AmazonSageMakerFullAccess \+ AmazonSageMakerPipelinesIntegrations | 
| 특성 저장소 액세스 | AmazonSageMakerFeatureStoreAccess | 
| 모델 거버넌스 | AmazonSageMakerModelGovernanceUseAccess | 
| 모델 레지스트리 | AmazonSageMakerModelRegistryFullAccess | 

전체 목록은 [AWS Amazon SageMaker AI에 대한 관리형 정책을](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol.html) 참조하세요.

#### IAM Access Analyzer 정책 생성 사용(최소 권한의 경우)
<a name="role-manager-access-analyzer"></a>

IAM Access Analyzer를 사용하여 실제 CloudTrail 액세스 활동을 기반으로 최소 권한 정책을 생성합니다. 이렇게 하면 Role Manager의 정적 템플릿보다 더 정확한 사용 기반 정책이 생성됩니다.

1. SageMaker 워크로드에 대해** CloudTrail 로깅을 활성화합니다**(일반적으로 이미 활성화됨).

1. 대표 기간(30\~90일 권장`AmazonSageMakerFullAccess`) 동안 더 광범위한 정책(예: )으로 **워크로드를 실행합니다**.

1. IAM Access Analyzer에서 **정책을 생성합니다**.
   + IAM 콘솔 > **Access Analyzer** > **정책 생성을** 엽니다.
   + 분석할 역할을 선택합니다.
   + CloudTrail 추적 및 기간을 지정합니다.
   + 실제로 사용된 작업만 포함된 생성된 정책을 검토합니다.

1. **생성된 정책을 적용하여** 더 광범위한 초기 정책을 대체합니다.

이 접근 방식은 Role Manager의 정적 템플릿을 실제 사용 패턴을 반영하는 동적 정책으로 대체하여 수동 큐레이션 없이 진정한 최소 권한을 달성합니다.

자세한 단계는 [IAM Access Analyzer 정책 생성을](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html) 참조하세요.

#### Infrastructure-as-Code(CloudFormation)
<a name="role-manager-cloudformation"></a>

반복 가능한 버전 제어 역할 관리를 CloudFormation 위해에서 SageMaker 실행 역할을 정의합니다. 다음은 사용 사례에 따라 수정해야 하는 예입니다.

```
AWSTemplateFormatVersion: '2010-09-09'
Description: SageMaker execution roles replacing Role Manager personas

Resources:
  # Replaces Role Manager "SageMaker AI Compute" persona
  SageMakerComputeRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: sagemaker-compute-execution-role
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: sagemaker.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
      Policies:
        - PolicyName: S3DataAccess
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - s3:GetObject
                  - s3:PutObject
                  - s3:DeleteObject
                  - s3:ListBucket
                Resource:
                  - arn:aws:s3:::my-sagemaker-bucket
                  - arn:aws:s3:::my-sagemaker-bucket/*
      Tags:
        - Key: Purpose
          Value: sagemaker-compute
        - Key: ManagedBy
          Value: cloudformation

  # Replaces Role Manager "Data Scientist" persona
  DataScientistRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: sagemaker-data-scientist-role
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: sagemaker.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
        - arn:aws:iam::aws:policy/AmazonSageMakerCanvasFullAccess
        - arn:aws:iam::aws:policy/AmazonSageMakerCanvasAIServicesAccess
      Policies:
        - PolicyName: GlueAccess
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - glue:CreateTable
                  - glue:UpdateTable
                  - glue:DeleteTable
                  - glue:GetTable
                  - glue:GetTables
                  - glue:GetDatabase
                  - glue:GetDatabases
                Resource: '*'
      Tags:
        - Key: Purpose
          Value: sagemaker-data-scientist
        - Key: ManagedBy
          Value: cloudformation

  # Replaces Role Manager "MLOps" persona
  MLOpsRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: sagemaker-mlops-role
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: sagemaker.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
        - arn:aws:iam::aws:policy/AmazonSageMakerPipelinesIntegrations
        - arn:aws:iam::aws:policy/AmazonS3FullAccess
      Tags:
        - Key: Purpose
          Value: sagemaker-mlops
        - Key: ManagedBy
          Value: cloudformation

Outputs:
  ComputeRoleArn:
    Description: ARN of the SageMaker Compute execution role
    Value: !GetAtt SageMakerComputeRole.Arn
  DataScientistRoleArn:
    Description: ARN of the Data Scientist execution role
    Value: !GetAtt DataScientistRole.Arn
  MLOpsRoleArn:
    Description: ARN of the MLOps execution role
    Value: !GetAtt MLOpsRole.Arn
```

#### Infrastructure-as-Code(AWS CDK)
<a name="role-manager-cdk"></a>

역할 관리자 CDK 구문(`Persona`, `Activity`)을 표준 IAM 구문으로 바꿉니다. 다음은 사용 사례에 따라 수정해야 하는 예입니다.

```
import * as cdk from 'aws-cdk-lib';
import * as iam from 'aws-cdk-lib/aws-iam';
import { Construct } from 'constructs';

export class SageMakerRolesStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // Replaces Role Manager "SageMaker AI Compute" persona
    const computeRole = new iam.Role(this, 'SageMakerComputeRole', {
      roleName: 'sagemaker-compute-execution-role',
      assumedBy: new iam.ServicePrincipal('sagemaker.amazonaws.com'),
      managedPolicies: [
        iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonSageMakerFullAccess'),
      ],
    });

    // Replaces Role Manager "Data Scientist" persona
    const dataScientistRole = new iam.Role(this, 'DataScientistRole', {
      roleName: 'sagemaker-data-scientist-role',
      assumedBy: new iam.ServicePrincipal('sagemaker.amazonaws.com'),
      managedPolicies: [
        iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonSageMakerFullAccess'),
        iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonSageMakerCanvasFullAccess'),
        iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonSageMakerCanvasAIServicesAccess'),
      ],
    });

    // Add custom inline policy for Glue access
    // (replaces "Manage Glue Tables" ML activity)
    dataScientistRole.addToPolicy(new iam.PolicyStatement({
      effect: iam.Effect.ALLOW,
      actions: [
        'glue:CreateTable',
        'glue:UpdateTable',
        'glue:DeleteTable',
        'glue:GetTable',
        'glue:GetTables',
        'glue:GetDatabase',
        'glue:GetDatabases',
      ],
      resources: ['*'],
    }));

    // Replaces Role Manager "MLOps" persona
    const mlopsRole = new iam.Role(this, 'MLOpsRole', {
      roleName: 'sagemaker-mlops-role',
      assumedBy: new iam.ServicePrincipal('sagemaker.amazonaws.com'),
      managedPolicies: [
        iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonSageMakerFullAccess'),
        iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonSageMakerPipelinesIntegrations'),
        iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonS3FullAccess'),
      ],
    });

    // Example: Scope down with VPC conditions
    // (replaces Role Manager VPC customization)
    computeRole.addToPolicy(new iam.PolicyStatement({
      effect: iam.Effect.ALLOW,
      actions: [
        'ec2:CreateNetworkInterface',
        'ec2:CreateNetworkInterfacePermission',
        'ec2:DeleteNetworkInterface',
        'ec2:DeleteNetworkInterfacePermission',
        'ec2:DescribeNetworkInterfaces',
        'ec2:DescribeVpcs',
        'ec2:DescribeDhcpOptions',
        'ec2:DescribeSubnets',
        'ec2:DescribeSecurityGroups',
      ],
      resources: ['*'],
      conditions: {
        StringEquals: {
          'ec2:Vpc': 'arn:aws:ec2:us-east-1:123456789012:vpc/vpc-xxxxxxxx',
        },
      },
    }));
  }
}
```