

# ID 管理
<a name="identity-management"></a>

 このセクションでは、企業ディレクトリ内の従業員ユーザーが AWS アカウントへのフェデレーションを通じて SageMaker AI Studio にアクセスする方法について説明します。まず、ユーザー、グループ、ロールのマッピング方法とユーザーフェデレーションの仕組みについて簡単に説明します。

## ユーザー、グループ、ロール
<a name="users-groups-and-role"></a>

 AWS では、ユーザー、グループ、ロールを使用してリソースのアクセス許可を管理します。お客様は、ユーザーとグループを管理するために、IAM を使用するか、Active Directory (AD) などの企業ディレクトリを使用できます。企業ディレクトリは、Okta などの外部 IdP を介して有効にすることで、クラウドやオンプレミスで実行しているさまざまなアプリケーションに対してユーザーを認証できます。

 「AWS セキュリティの柱」の「[ID 管理](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/identity-management.html)」セクションで説明しているように、一元的な IdP でユーザー ID を管理するのがベストプラクティスです。これにより、バックエンドの人事プロセスとの統合や、従業員ユーザーへのアクセス管理が容易になります。

 Okta などの IdP を使用すると、エンドユーザーは 1 つ以上の AWS アカウントに対して認証し、Security Assertion Markup Language (SAML) による SSO を使用して特定のロールにアクセスできます。IdP 管理者は、AWS アカウントから IdP にロールをダウンロードしてユーザーに割り当てることができます。エンドユーザーが AWS にログインすると、1 つ以上の AWS アカウントでエンドユーザーに割り当てられている AWS ロールのリストが AWS 画面に表示されます。エンドユーザーは、ログイン時に引き受けるロールを選択できます。このロールは、認証されたセッション中におけるアクセス許可を定義します。

 アクセスを許可する特定のアカウントとロールの組み合わせごとに、グループが IdP に存在する必要があります。これは、AWS ロール別のグループと考えることができます。**ロール別のグループのメンバーであるユーザーには、1 つの特定の AWS アカウントで 1 つの特定のロールにアクセスするための 1 つの権限が付与されます。ただし、この 1 つの権限を付与するプロセスは、各ユーザーを特定の AWS ロールグループに割り当ててユーザーアクセスを管理するようにスケールすることはできません。管理を簡略化するには、さまざまな AWS 権限のセットを必要とする組織内のすべてのユーザーセットごとに、複数のグループを個別に作成することをお勧めします。

 一元的な IdP 設定の例として、AD を設定している企業を考えてみます。この設定では、ユーザーとグループを IdP ディレクトリに同期します。AWS では、これらの AD グループは IAM ロールにマップされます。ワークフローの主なステップは、以下のとおりです。

![\[AD ユーザー、AD グループ、IAM ロールをオンボーディングするためのワークフローを示す図。\]](http://docs.aws.amazon.com/ja_jp/whitepapers/latest/sagemaker-studio-admin-best-practices/images/onboarding-workflow.png)


1.  AWS で、各 AWS アカウントと IdP との SAML 統合を設定します。

1.  AWS で、AWS アカウントごとにロールを設定し、IdP に同期します。

1.  企業の AD システムで以下の操作を行います。

   1.  アカウントロールごとに AD グループを作成し、IdP に同期します (例: `Account1-Platform-Admin-Group` を AWS ロールグループとして作成します)。

   1.  各ペルソナレベルで管理グループ (`Platform-Mgmt-Group` など) を作成し、AWS ロールグループをメンバーとして割り当てます。

   1.  管理グループにユーザーを割り当て、AWS アカウントロールへのアクセスを許可します。

1.  IdP で、AWS ロールグループ (`Account1-Platform-Admin-Group` など) を AWS アカウントロール (Account1 のプラットフォーム管理者など) にマップします。

1.  データサイエンティストの Alice が IdP にログインすると、AWS フェデレーションアプリの UI に「アカウント 1 データサイエンティスト」と「アカウント 2 データサイエンティスト」の 2 つのオプションが表示されます。

1.  Alice が「アカウント 1 データサイエンティスト」オプションを選択すると、AWS アカウント 1 (SageMaker AI コンソール) の承認されたアプリケーションに接続されます。

 SAML アカウントフェデレーションの詳細な設定手順については、Okta の「[AWS アカウントフェデレーション用に SAML 2.0 を設定する方法](https://saml-doc.okta.com/SAML_Docs/How-to-Configure-SAML-2.0-for-Amazon-Web-Service)」を参照してください。

## ユーザーフェデレーション
<a name="user-federation"></a>

SageMaker AI Studio の認証は IAM または IAM IdC のいずれかを使用して行うことができます。ユーザーを IAM を介して管理する場合は、IAM モードを選択できます。企業が外部 IdP を使用する場合は、IAM または IAM IdC を介してフェデレーションできます。認証モードは、既存の SageMaker AI Studio ドメインでは更新できないため、本番環境の SageMaker AI Studio ドメインを作成する前に認証モードを決める必要があります。

SageMaker AI Studio を IAM モードで設定した場合、SageMaker AI Studio ユーザーは署名付き URL を介してアプリケーションにアクセスします。この URL にブラウザからアクセスすると、ユーザーは SageMaker AI Studio アプリに自動的にサインインされます。

### IAM ユーザー
<a name="iam-users"></a>

 IAM ユーザーの場合、管理者はユーザーごとに SageMaker AI Studio ユーザープロファイルを作成して IAM ロールに関連付けます。このロールは、ユーザーが Studio 内から実行する必要があるアクションを許可します。AWS ユーザーが各自の SageMaker AI Studio ユーザープロファイルのみにアクセスできるように制限する場合、管理者は SageMaker AI Studio ユーザープロファイルにタグを付け、そのタグ値が AWS ユーザー名と一致したときにのみアクセスを許可する IAM ポリシーをユーザーにアタッチする必要があります。ポリシーステートメントは次のようになります。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AmazonSageMakerPresignedUrlPolicy",
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreatePresignedDomainUrl"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "sagemaker:ResourceTag/studiouserid": "${aws:username}" 
                }
            }
        }
    ]
}
```

### AWS IAM またはアカウントフェデレーション
<a name="aws-iam-or-account-federation"></a>

 AWS アカウント フェデレーション方式により、お客様は Okta などの SAML IdP から SageMaker AI コンソールにフェデレーションできます。ユーザーが各自のユーザープロファイルのみにアクセスできるように制限する場合、管理者は SageMaker AI Studio ユーザープロファイルにタグを付け、IdP に `PrincipalTags` を追加して一時的なタグとして設定します。次の図は、フェデレーションユーザー (データサイエンティストの Alice) が自分の SageMaker AI Studio ユーザープロファイルへのアクセスを、どのように承認されるかを示しています。

![\[SageMaker AI Studio にアクセスするための AWS IAM アカウントフェデレーションを示す図。\]](http://docs.aws.amazon.com/ja_jp/whitepapers/latest/sagemaker-studio-admin-best-practices/images/account-federation.png)


1.  SageMaker AI Studio の Alice のユーザープロファイルは、ユーザー ID がタグ付けされ、実行ロールに関連付けられています。

1.  Alice が IdP (Okta) に対して認証を行います。

1.  IdP は Alice を認証し、Alice がメンバーである 2 つのロール (アカウント 1 とアカウント 2 のデータサイエンティスト) で SAML アサーションをポストします。Alice は、アカウント 1 のデータサイエンティストのロールを選択します。

1.  Alice はアカウント 1 の SageMaker AI コンソールにログインし、データサイエンティストのロールを引き受けます。Alice は、Studio アプリインスタンスのリストから自分の Studio アプリインスタンスを開きます。

1.  引き受けたロールセッションの Alice プリンシパルタグが、選択した SageMaker AI Studio アプリインスタンスのユーザープロファイルタグと照合して検証されます。プロファイルタグが有効な場合、SageMaker AI Studio アプリインスタンスが起動し、実行ロールを引き受けます。

 ユーザーオンボーディングの一環として SageMaker AI の実行ロールおよびポリシーの作成を自動化する場合、これを実現する方法の 1 つは次のとおりです。

1.  `SageMaker AI-Account1-Group` などの AD グループを各アカウントレベルと各 Studio ドメインレベルで設定します。

1.  ユーザーを SageMaker AI Studio にオンボーディングする必要がある場合は、SageMaker AI-Account1-Group をユーザーのグループメンバーシップに追加します。

`SageMaker AI-Account1-Group` メンバーシップイベントをリッスンする自動プロセスを設定し、AWS API を使用して AD グループメンバーシップに基づくロール、ポリシー、タグ、SageMaker AI Studio ユーザープロファイルを作成します。ロールをユーザープロファイルにアタッチします。サンプルポリシーについては、「[SageMaker AI Studio ユーザーが他のユーザープロファイルにアクセスできないようにする](permissions-management.md#prevent-sagemaker-studio-users-from-accessing-other-user-profiles)」を参照してください。

### AWS Lambda を使用した SAML 認証
<a name="saml-authentication-using-aws-lambda"></a>

 IAM モードでは、SAML アサーションを使用してユーザーを SageMaker AI Studio に対して認証することもできます。このアーキテクチャでは、お客様に既存の IdP があるため、ユーザーが (AWS ID フェデレーションアプリケーションの代わりに)  Studio にアクセスするための SAML アプリケーションを作成できます。お客様の IdP が IAM に追加されます。AWS Lambda 関数は、IAM と STS を使用して SAML アサーションを検証し、API ゲートウェイまたは Lambda 関数を直接呼び出して署名付きドメイン URL を作成するのに役立ちます。

 このソリューションの利点は、Lambda 関数で SageMaker AI Studio にアクセスするためのロジックをカスタマイズできることです。以下に例を示します。
+  ユーザープロファイルを自動的に作成します (まだ存在していない場合)。
+  SAML 属性を解析して SageMaker AI Studio の[実行ロール](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html)に対してロールやポリシードキュメントをアタッチまたは削除します。
+  ライフサイクル設定 (LCC) やタグを追加して、ユーザープロファイルをカスタマイズします。

 要約すると、このソリューションは、認証と認可のためのカスタムロジックを備えた SAML2.0 アプリケーションとして SageMaker AI Studio を公開します。実装の詳細については、付録の「[SAML アサーションを使用した SageMaker Studio へのアクセス](appendix.md#sagemaker-studio-access-using-saml)」セクションを参照してください。**

![\[カスタム SAML アプリケーションを使用した SageMaker AI Studio へのアクセスを示す図。\]](http://docs.aws.amazon.com/ja_jp/whitepapers/latest/sagemaker-studio-admin-best-practices/images/access-studio-using-saml.png)


## AWS IAM IdC フェデレーション
<a name="aws-iam-idc-federation"></a>

IdC フェデレーション方式を使用すると、お客様は SAML IdP (Okta など) から SageMaker AI Studio アプリケーションに直接フェデレーションできます。次の図は、フェデレーションユーザーが各自の SageMaker AI Studio インスタンスへのアクセスをどのように承認されるかを示しています。

![\[IAM IdC モードでの SageMaker AI Studio へのアクセスを示す図。\]](http://docs.aws.amazon.com/ja_jp/whitepapers/latest/sagemaker-studio-admin-best-practices/images/access-studio-with-sso.png)




1. 企業 AD の場合、ユーザーはプラットフォーム管理者グループやデータサイエンティストグループなどの AD グループのメンバーです。

1. ID プロバイダー (IdP) の AD ユーザーおよび AD グループは、AWS IAM アイデンティティセンターに同期され、それぞれシングルサインオンユーザーおよびグループとして割り当てることができます。

1. IdP は、SAML アサーションを AWS IdC SAML エンドポイントにポストします。

1. SageMaker AI Studio では、IdC ユーザーが SageMaker Studio アプリケーションに割り当てられます。この割り当ては、IdC グループを使用して行うことができ、SageMaker AI Studio は各 IdC ユーザーレベルに適用されます。この割り当てを作成すると、SageMaker AI Studio は IdC ユーザープロファイルを作成し、ドメイン実行ロールをアタッチします。

1. ユーザーは、IdC からクラウドアプリケーションとしてホストされている安全な署名付き URL を使用して SageMaker AI Studio アプリケーションにアクセスします。SageMaker AI Studio は、IdC ユーザープロファイルにアタッチされた実行ロールを引き受けます。

### ドメインの認証に関するガイダンス
<a name="domain-authentication-guidance"></a>

ドメインの認証モードを選択する場合の考慮事項は次のとおりです。

1. ユーザーが AWS マネジメントコンソールにアクセスせずに SageMaker AI Studio UI を直接表示できるようにする場合は、AWS IAM IdC でシングルサインオンモードを使用します。

1. ユーザーが AWS マネジメントコンソールにアクセスせずに SageMaker AI Studio UI を IAM モードで直接表示できるようにする場合は、バックエンドで Lambda 関数を使用してユーザープロファイル用の署名付き URL を生成し、ユーザーを SageMaker AI Studio UI にリダイレクトできます。

1. IdC モードでは、各ユーザーは 1 つのユーザープロファイルにマップされます。

1. IdC モードでは、すべてのユーザープロファイルに自動的にデフォルトの実行ロールが割り当てられます。ユーザーに異なる実行ロールを割り当てる場合は、[UpdateUserProfile](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateUserProfile.html) API を使用してユーザープロファイルを更新する必要があります。

1. インターネットを経由せずに (生成した署名付き URL を使用して) IAM モードの SageMaker AI Studio UI へアクセスを VPC エンドポイントに制限する場合は、カスタム DNS リゾルバーを使用できます。ブログ記事「[Amazon SageMaker AI Studio の署名付き URL のセキュリティ保護パート 1: 基盤インフラストラクチャ](https://aws.amazon.com/blogs/machine-learning/secure-amazon-sagemaker-studio-presigned-urls-part-1-foundational-infrastructure/)」を参照してください。