

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# を使用してアクセス AWS IAM アイデンティティセンター 許可セットをコードとして管理する AWS CodePipeline
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline"></a>

*Amazon Web Services、Andre Cavalcante および Claison Amorim*

## 概要
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-summary"></a>

AWS IAM アイデンティティセンター を使用すると、すべての AWS アカウント およびアプリケーションへのシングルサインオン (SSO) アクセスを一元管理できます。IAM アイデンティティセンターでユーザー ID の作成および管理を行い、またはMicrosoft Active Directory ドメインや外部 ID プロバイダー (IdP) など既存の ID ソースに接続することもできます。IAM Identity Center は、[アクセス許可セット](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) AWS を使用して環境へのきめ細かなアクセスを定義、カスタマイズ、割り当てるための統一された管理エクスペリエンスを提供します。許可セットは、IAM アイデンティティセンターのアイデンティティストアまたは外部 IdP からフェデレーションユーザーとグループに適用します。

このパターンは、 AWS Organizationsで組織として管理されているマルチアカウント環境で IAM アイデンティティセンターへのアクセス権限セットをコードとして管理することに役立ちます。このパターンでは、以下のことを実現できます。
+ アクセス権限セットの作成、削除と更新
+ ターゲット、組織単位 (OUs)、または組織ルートへのアクセス許可セットの割り当てを作成 AWS アカウント、更新、または削除します。

IAM Identity Center のアクセス許可と割り当てをコードとして管理するために、このソリューションは AWS CodeBuild と を使用する継続的インテグレーションと継続的デリバリー (CI/CD) パイプラインをデプロイします AWS CodePipeline。許可セットと割り当ては、リモートリポジトリに保存する JSON テンプレートで管理されます。Amazon EventBridge ルールは、リポジトリへの変更またはターゲット OU 内のアカウントへの変更を検出すると、 AWS Lambda 関数を開始します。Lambda 関数は、IAM アイデンティティセンターの権限セットと割り当てを更新する CI/CD パイプラインを開始します。

## 前提条件と制限
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-prereqs"></a>

**前提条件**
+  AWS Organizationsで組織として管理されるマルチアカウント環境。詳細については、「[組織の作成](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_create.html)」を参照してください。
+ IAM ID センターであり、ID ソースで有効化と設定が行われます。詳細については、IAM アイデンティティセンタードキュメントの「[開始方法](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)」を参照してください。
+ 以下の委任管理者として登録されているメンバーアカウント AWS のサービス。
  + IAM アイデンティティセンター – 手順については、IAM アイデンティティセンタードキュメントの「[メンバーアカウントの登録](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html#delegated-admin-how-to-register)」を参照してください。
  + AWS Organizations – 手順については、「 [の委任管理者 AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_delegate_policies.html)」を参照してください。このアカウントには、アカウントと OU を一覧表示および説明するアクセス許可が必要です。
**注記**  
両方のサービスに対する委任管理者と同じアカウントを使用する必要があります。
+ IAM Identity Center の委任管理者アカウントと組織の管理アカウントに AWS CloudFormation スタックをデプロイするアクセス許可。詳細については、CloudFormation ドキュメントの「[アクセスの制御](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html)」を参照してください。
+ IAM アイデンティティセンターの委任管理者アカウント内の Amazon Simple Storage Service (Amazon S3) バケット。このバケットにアーティファクトコードをアップロードします。手順については、Amazon S3 ドキュメントの「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」を参照してください。
+ 組織の管理アカウントのアカウント ID。手順については、[AWS アカウント 「ID の検索](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindAccountId)」を参照してください。
+ GitHub などのソースコードホスト内のリポジトリ。

**制限事項**
+ このパターンは、単一アカウント環境や AWS Organizationsで組織として管理されていないアカウントの許可セットの管理や割り当てには使用できません。
+ アクセス権限セット名、割り当て ID、IAM アイデンティティセンタープリンシパルのタイプと ID は、デプロイ後に変更することはできません。
+ このパターンは、「[カスタムアクセス権限](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetcustom.html)」の作成と管理に役立ちます。このパターンを使用して「[定義済みの権限](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetpredefined.html)」を管理しまたは割り当てることはできません。
+ このパターンは、組織の管理アカウントのアクセス権限セットの管理には使用できません。

## アーキテクチャ
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-architecture"></a>

**ターゲットアーキテクチャ**

![CI/CD パイプラインを使用して、IAM アイデンティティセンターの許可セットを管理します。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/419aaa80-1b97-402d-9c74-c1b8c1ddd1cb/images/1f143bc4-c2c6-4ab6-8615-742fec617f18.png)


この図表は、次のワークフローを示しています:

1. ユーザーは、次の変更の全部または一部を実行します。
   + GitHub などのリモートリポジトリに 1 つ以上の変更をコミットします
   + の OU のアカウントを変更します。 AWS Organizations

1. ユーザーがリモートリポジトリへの変更をメインブランチにコミットすると、パイプラインが開始されます。

   ユーザーが OU のアカウントを変更した場合、`MoveAccount` EventBridge ルールは変更を検出し、組織の管理アカウントで Lambda 関数を開始します。

1. 開始された Lambda 関数は CodePipeline で CI/CD パイプラインを開始します。

1. CodePipeline は `TemplateValidation` CodeBuild プロジェクトを開始します。`TemplateValidation` CodeBuild プロジェクトは、リモートリポジトリ内の Python スクリプトで許可セットテンプレートを検証します。CodeBuild は以下の検証を行います。
   + アクセス権限セット名は一意です。
   + 割り当てステートメント ID (`Sid`) は一意です。
   + `CustomPolicy` パラメータ内のポリシー定義は有効です。(この検証では が使用されます) AWS Identity and Access Management Access Analyzer。
   + 管理ポリシーの Amazon リソースネーム (ARN) は有効です。

1. `Deploy` CodeBuild プロジェクトの`PermissionSet`アクショングループは、 AWS SDK for Python (Boto3) を使用して IAM Identity Center のアクセス許可セットを削除、作成、または更新します。この `SSOPipeline:true` タグが付いたアクセス権限セットのみが影響を受けます。このパイプラインを通じて管理されるすべてのアクセス権限セットにはこのタグが付きます。

1. `Deploy` CodeBuild プロジェクトの `Assignments` アクショングループでは、Terraform を使用して、IAM アイデンティティセンターの割り当てを削除、作成、または更新します。Terraform バックエンドステートファイルは、同じアカウントの Amazon S3 バケットに保存されます。

1. CodeBuild は IAM アイデンティティセンターのアクセス権限セットと割り当てを更新します。

**自動化とスケール**

マルチアカウント環境のすべての新しいアカウントは の特定の組織単位に移動されるため AWS Organizations、このソリューションは自動的に実行され、割り当てテンプレートで指定したすべてのアカウントに必要なアクセス許可セットが付与されます。追加の自動化やスケーリングアクションは必要ありません。

大規模な環境では、IAM Identity Center に対する API リクエスト数が多いと、このソリューションの実行が遅くなることがあります。Terraform と Boto3 は、パフォーマンスの低下を最小限に抑えるために自動的にスロットリングを管理します。

## ツール
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-tools"></a>

**AWS のサービス**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) は、 AWS リソースをセットアップし、迅速かつ一貫してプロビジョニングし、 AWS アカウント および 全体のライフサイクルを通じてリソースを管理するのに役立ちます AWS リージョン。
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) は完全マネージド型の構築サービスです。ソースコードのコンパイル、ユニットテストの実行、すぐにデプロイできるアーティファクトの生成を行います。 
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) は、ソフトウェアリリースのさまざまな段階を迅速にモデル化および設定し、ソフトウェアの変更を継続的にリリースするために必要なステップを自動化するのに役立ちます。
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) は、アプリケーションをさまざまなソースのリアルタイムデータに接続できるようにするサーバーレスイベントバスサービスです。例えば、 AWS Lambda 関数、API 送信先を使用する HTTP 呼び出しエンドポイント、その他のイベントバスなどです AWS アカウント。
+ [AWS IAM アイデンティティセンター](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) を使用すると、すべての AWS アカウント およびクラウドアプリケーションへのシングルサインオン (SSO) アクセスを一元管理できます。
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html) は、作成して一元管理する AWS アカウント 組織に複数の を統合するのに役立つアカウント管理サービスです。
+ [AWS SDK for Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) は、Python アプリケーション、ライブラリ、またはスクリプトを と統合するのに役立つソフトウェア開発キットです AWS のサービス。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。

**コードリポジトリ**

このパターンのコードは、「[aws-iam-identity-center-pipeline](https://github.com/aws-samples/aws-iam-identity-center-pipeline)」リポジトリで利用できます。リポジトリの templates フォルダには、アクセス権限セットと割り当ての両方のサンプルテンプレートが含まれています。また、CI/CD パイプラインと AWS リソースをターゲットアカウントにデプロイするための AWS CloudFormation テンプレートも含まれています。

## ベストプラクティス
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-best-practices"></a>
+ アクセス権限セットと割り当てテンプレートの変更を開始する前に、組織のアクセス権限セットを計画することをお勧めします。アクセス権限はどうあるべきか、そのアクセス権限セットをどのアカウントまたは OU に適用すべきか、そしてどの IAM Identity Center プリンシパル (ユーザーまたはグループ) がアクセス権限セットの影響を受けるべきかを検討してください。アクセス許可セット名、割り当て ID、IAM アイデンティティセンタープリンシパルのタイプと ID は、デプロイ後に変更することはできません。
+ 最小限権限原則に従い、タスクの実行に必要最小限の権限を付与します。詳細については、 AWS Identity and Access Management (IAM) ドキュメントの「最小[特権の付与](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv)」と[「セキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html)」を参照してください。

## エピック
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-epics"></a>

### プラン、アクセス権限セット、割り当て
<a name="plan-permission-sets-and-assignments"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| リポジトリのクローン作成 | コマンドシェルで、次のコマンドを入力します。これにより、GitHub から「[ aws-iam-identity-center-pipeline ](https://github.com/aws-samples/aws-iam-identity-center-pipeline)」リポジトリがクローンされます。<pre>git clone https://github.com/aws-samples/aws-iam-identity-center-pipeline.git</pre> | DevOps エンジニア | 
| アクセス権限セットを定義します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.html) | DevOps エンジニア | 
| 割り当てを定義します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.html) | DevOps エンジニア | 

### アクセス権限セットと割り当てをデプロイ
<a name="deploy-the-permission-sets-and-assignments"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| IAM アイデンティティセンターの委任管理者アカウントにリソースをデプロイします。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.html) | DevOps エンジニア | 
|  AWS Organizations 管理アカウントにリソースをデプロイします。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.html) | DevOps エンジニア | 
| リモートリポジトリのセットアップを完了します。 |  AWS CodeConnections 接続のステータスを から `PENDING`に変更します`AVAILABLE`。この接続は、CloudFormation スタックをデプロイしたときに作成されています。手順については、CodeConnections ドキュメントの「[保留中の接続の更新](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-update.html)」を参照してください。 | DevOps エンジニア | 
| リモートリポジトリにファイルをアップロードします。 | `aws-samples` リポジトリからダウンロードして前のステップで編集したすべてのファイルを、リモートリポジトリにアップロードします。`main` ブランチの変更によりパイプラインが開始され、許可セットと割り当てが作成または更新されます。 | DevOps エンジニア | 

### アクセス権限セットと割り当てを更新
<a name="updating-the-permission-sets-and-assignments"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アクセス権限セットと割り当てを更新します。 | `MoveAccount` Amazon EventBridge ルールが組織内のアカウントへの変更を検出すると、CI/CD パイプラインが自動的に起動し、アクセス権限セットを更新します。例えば、割り当ての JSON ファイルで指定された OU にアカウントを追加すると、CI/CD パイプラインはそのアクセス権限セットを新しいアカウントに適用します。<br />デプロイされた許可セットと割り当てを変更する場合は、JSON ファイルを更新し、JSON ファイルを更新してから、これらをリモートリポジトリにコミットします。<br />CI/CD パイプラインで以前にデプロイされたアクセス権限セットとアソシエーションを管理する場合は、次の点に注意してください。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.html) | DevOps エンジニア | 

## トラブルシューティング
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| アクセス拒否エラー | CloudFormation テンプレートおよびテンプレート内で定義されたリソースをデプロイするために必要なアクセス権限があることを確認してください。詳細については、CloudFormation ドキュメントの「[アクセスの制御](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html)」を参照してください。 | 
| 検証段階におけるパイプラインエラー | このエラーは、アクセス権限セットまたは割り当てテンプレートにエラーがある場合に表示されます。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.html) | 

## 関連リソース
<a name="manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline-resources"></a>
+ 「[アクセス権限セット](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html)」(IAM アイデンティティセンターのドキュメント)