リポジトリへのクロスアカウントアクセス: AccountA の管理者のアクション - AWS CodeCommit

リポジトリへのクロスアカウントアクセス: AccountA の管理者のアクション

AccountB のユーザーまたはグループが AccountA のリポジトリにアクセスすることを許可するには、AccountA の管理者は以下を行う必要があります。

  • AccountA でリポジトリにアクセスを付与するポリシーを作成します。

  • AccountB の IAM ユーザーおよびグループが引き受けることができるロールを AccountA で作成します。

  • ロールへのポリシーの付与

次のセクションでは、手順と例を示します。

ステップ 1: AccountA でリポジトリアクセス用のポリシーを作成する

AccountB がリポジトリにアクセスを付与するポリシーを AccountA で作成できます。許可するアクセスのレベルに応じて、次のいずれかのリンクを実行します。

  • AccountB ユーザーに特定のリポジトリへのアクセスを許可しますが、AccountA のすべてのリポジトリの一覧を閲覧することを許可しないポリシーを設定します。

  • AccountB ユーザーが AccountA のすべてのリポジトリの一覧からリポジトリを選択することを許可する追加のアクセスを設定します。

リポジトリアクセス用のポリシーを作成するには

  1. AccountA でポリシーを作成するアクセス許可を持つ IAM ユーザーとして、AWS マネジメントコンソールにサインインします。

  2. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  3. ナビゲーションペインで、[ポリシー] を選択します。

  4. [ポリシーの作成] を選択します。

  5. [JSON] タブを選択して、次の JSON ポリシードキュメントを JSON テキストボックスに貼り付けます。us-east-2 をレポジトリの AWS リージョン に、111122223333 を AccountA のアカウント ID に、MySharedDemoRepo を AccountA の CodeCommit レポジトリの名前に、それぞれ置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:BatchGet*", "codecommit:Create*", "codecommit:DeleteBranch", "codecommit:Get*", "codecommit:List*", "codecommit:Describe*", "codecommit:Put*", "codecommit:Post*", "codecommit:Merge*", "codecommit:Test*", "codecommit:Update*", "codecommit:GitPull", "codecommit:GitPush" ], "Resource": [ "arn:aws:codecommit:us-east-2:111122223333:MySharedDemoRepo" ] } ] }

    このロールを引き受けるユーザーが CodeCommit コンソールのリポジトリの一覧を表示できるようにするには、次に示すように、追加のステートメントをポリシーに追加します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:BatchGet*", "codecommit:Create*", "codecommit:DeleteBranch", "codecommit:Get*", "codecommit:List*", "codecommit:Describe*", "codecommit:Put*", "codecommit:Post*", "codecommit:Merge*", "codecommit:Test*", "codecommit:Update*", "codecommit:GitPull", "codecommit:GitPush" ], "Resource": [ "arn:aws:codecommit:us-east-2:111122223333:MySharedDemoRepo" ] }, { "Effect": "Allow", "Action": "codecommit:ListRepositories", "Resource": "*" } ] }

    このアクセスは、このポリシーでこのロールを引き受けるユーザーにアクセス許可があるリポジトリの検索を容易にします。これで、一覧からリポジトリの名前を選択し、共有するリポジトリのホームページに移動することができます (Code)。ユーザーは一覧に表示されるその他のリポジトリにはアクセスすることはできませんが、[ダッシュボード] ページで AccountA のリポジトリを表示することはできます。

    このロールを引き受けるユーザーに AccountA のすべてのリポジトリの一覧を表示したくない場合には、最初のポリシー例を使用しながら、CodeCommit コンソールの共有するリポジトリのホームページへの直接リンクをこれらのユーザーに送信するようにします。

  6. [ポリシーの確認] を選択します。ポリシー検証で構文エラーが報告されます (例えば、例の Amazon Web Services アカウント ID およびリポジトリ名を自身の Amazon Web Services アカウント ID およびリポジトリ名に置き換えることを忘れた場合など)。

  7. [ポリシーの確認] ページで、ポリシー名を入力します (例: CrossAccountAccessForMySharedDemoRepo)。このポリシーにオプションの説明を提供することもできます。[ポリシーの作成] を選択します。

ステップ 2: AccountA でリポジトリアクセス用のロールを作成する

ポリシーを設定したら、AccountB の IAM ユーザーおよびグループが引き受けるロールを作成し、ポリシーをこのロールにアタッチします。

リポジトリアクセス用のロールを作成するには

  1. IAM コンソールで、[ロール] を選択します。

  2. [ロールの作成] を選択します。

  3. 別の Amazon Web Services アカウントを選択します。

  4. [アカウント ID]、で AccountB の Amazon Web Services アカウント ID を入力します (例: 888888888888)。[Next: Permissions (次へ: アクセス許可)] を選択します。

  5. [アクセス権限ポリシーをアタッチする] で、前の手順で作成したポリシーを選択します (CrossAccountAccessForMySharedDemoRepo)。[Next: Review] を選択します。

  6. [ロール名] に、ロールの名前を入力します (例: MyCrossAccountRepositoryContributorRole)。他のユーザーがこのロールの役割を理解するように、オプションの説明を入力することもできます。

  7. [ロールの作成] を選択します。

  8. 作成したロールを開き、ロールの ARN をコピーします (たとえば、arn:aws:iam::111122223333:role/MyCrossAccountRepositoryContributorRole)。AccountB の管理者にこの ARN を提供する必要があります。