認証情報のローテーションを使用した AWS CodeCommit リポジトリへの接続 - AWS CodeCommit

認証情報のローテーションを使用した AWS CodeCommit リポジトリへの接続

AWS CodeCommit リポジトリへのアクセス権をユーザーに付与するために、IAM ユーザーを設定したり、アクセスキーとシークレットキーを使用したりする必要はありません。IAM ユーザーを作成する代わりに、AWS Directory Service、エンタープライズユーザーディレクトリ、またはウェブ ID プロバイダーに既存のアイデンティティを使用できます。このようなユーザーはフェデレーティッドユーザーと呼ばれます。AWS では、ID プロバイダーを通じてアクセスがリクエストされたとき、フェデレーティッドユーザーにロールを割り当てます。フェデレーティッドユーザーの詳細については、IAM ユーザーガイド の「フェデレーティッドユーザーとロール」を参照してください。 また、IAM ユーザーが別の AWS アカウント CodeCommit のリポジトリにアクセスするためのロールベースのアクセスを設定することもできます (クロスアカウントアクセスと呼ばれるテクニック)。リポジトリへのクロスアカウントアクセスを設定するためのウォークスルーは、「ロールを使用して AWS CodeCommit リポジトリへのクロスアカウントアクセスを設定する」を参照してください。

以下のような方法で認証する必要のあるユーザーに、アクセスを設定できます。

  • Security Assertion Markup Language (SAML)

  • 多要素認証 (MFA)

  • フェデレーション

  • Login with Amazon

  • Amazon Cognito

  • Facebook

  • Google

  • OpenID Connect (OIDC) 対応の ID プロバイダー

注記

以下の情報は、CodeCommit リポジトリに接続するための git-remote-codecommit または AWS CLI 認証情報ヘルパーの使用にのみ適用されます。CodeCommit への一時アクセスまたはフェデレーティッドアクセスに対して推奨されるアプローチは git-remote-codecommit を設定することであるため、このトピックでは、このユーティリティの使用例を示します。詳細については、「git-remote-codecommit を使用して AWS CodeCommit への HTTPS 接続をセットアップする手順」を参照してください。

アクセス認証情報の更新や一時的なアクセス認証情報で CodeCommit リポジトリに接続するのに、SSH あるいは Git 認証情報および HTTPS を使用することはできません。

以下のすべての要件が当てはまる場合には、これらのステップを実行する必要はありません。

上記の要件を満たす Amazon EC2 インスタンスは、お客様に代わって CodeCommit に一時アクセス認証情報を提供するように、すでに設定されています。

注記

Amazon EC2 インスタンス で git-remote-codecommit を設定および使用できます。

ユーザーに CodeCommit リポジトリへの一時アクセスを許可するには、以下の手順を実行します。

ステップ 1: 前提条件を満たす

設定ステップを実行し、認証情報の更新を使用して CodeCommit リポジトリへのアクセスをユーザーに許可します。

AWS CodeCommit の認証とアクセスコントロール」の情報を使用して、ユーザーに付与する CodeCommit アクセス許可を指定します。

ステップ 2: ロール名またはアクセス認証情報を取得する

ユーザーがロールを引き受けることによってリポジトリにアクセスできるようにするには、そのロールの Amazon リソースネーム (ARN) をユーザーに提供します。それ以外の場合、アクセス権の設定方法に応じて、ユーザーは次のいずれかの方法で認証情報の更新を取得できます。

ステップ 3: git-remote-codecommit をインストールし、AWS CLI を設定する

AWS CLI で git-remote-codecommit をインストールしてプロファイルを設定することで、アクセス認証情報を使用するようにローカルコンピュータを設定する必要があります。

  1. セットアップ 」の指示に従って、AWS CLI を設定します。1 つまたは複数のプロファイルを設定するには、aws configure コマンドを使用します。認証情報の更新を使用して CodeCommit リポジトリに接続するときに使用する、名前付きプロファイルを作成することを検討してください。

  2. 以下のいずれかの方法で認証情報をユーザーの AWS CLI 名前付きプロファイルに関連付けることができます。

    • CodeCommit にアクセスするロールを引き受ける場合は、そのロールを引き受けるのに必要な情報を含む名前付きプロファイルを設定します。たとえば、AWS アカウント 111111111111 で CodeCommitAccess という名前のロールを引き受ける場合、他の AWS リソースを操作するときに使用するデフォルトプロファイルと、そのロールを引き受けるときに使用する名前付きプロファイルを設定できます。次のコマンドは、CodeCommitAccess という名前のロールを引き受ける、名前付きプロファイルの CodeAccess を作成します。ユーザー名 Maria Garcia がセッションに関連付けられ、デフォルトのプロファイルがその AWS 認証情報のソースとして設定されます。

      aws configure set role_arn arn:aws:iam:::111111111111:role/CodeCommitAccess --profile CodeAccess aws configure set source_profile default --profile CodeAccess aws configure set role_session_name "Maria Garcia" --profile CodeAccess

      変更を確認する場合は、~/.aws/config ファイル (Linux の場合) または %UserProfile%.aws\configファイル (Windows の場合) を手動で表示または編集し、名前付きプロファイルの情報を確認します。たとえば、ファイルは次のようになります。

      [default] region = us-east-1 output = json [profile CodeAccess] source_profile = default role_session_name = Maria Garcia role_arn = arn:aws:iam:::111111111111:role/CodeCommitAccess

      名前付きプロファイルを設定したら、名前付きプロファイルを使用して git-remote-codecommit ユーティリティで CodeCommit リポジトリのクローンを作成できます。たとえば、MyDemoRepo という名前のリポジトリのクローンを作成するには、次のようにします。

      git clone codecommit://CodeAccess@MyDemoRepo
    • ウェブ ID フェデレーションと OpenID Connect (OIDC) を使用している場合は、一時的な認証情報を更新するために AWS Security Token Service (AWS STS) AssumeRoleWithWebIdentity API コールを行う名前付きプロファイルを設定します。aws configure set コマンドを使用するか、~/.aws/credentials ファイル (Linux の場合) または %UserProfile%.aws\credentials ファイル (Windows の場合) を手動で編集して、必要な設定値を持つ AWS CLI 名前付きプロファイルを追加します。たとえば、CodeCommitAccess ロールを引き受け、ウェブ ID トークンファイル ~/my-credentials /my-token-file を使用するプロファイルを作成するには、次のようにします。

      [CodeCommitWebIdentity] role_arn = arn:aws:iam:::111111111111:role/CodeCommitAccess web_identity_token_file=~/my-credentials/my-token-file role_session_name = Maria Garcia

    詳細については、AWS Command Line Interface ユーザーガイドの「AWS Command Line Interfaceの設定」および「AWS CLIでの IAM ロールの使用」を参照してください。

ステップ 4: CodeCommit リポジトリにアクセスする

ユーザーが「リポジトリへの接続」の指示に従って CodeCommit リポジトリに接続したとすると、そのユーザーは git-remote-codecommit によって提供される拡張機能と Git を使用して git clonegit pushgit pull を呼び出し、アクセスが許可されている CodeCommit リポジトリに対して、クローン作成、プッシュ、プルを行います。たとえば、リポジトリのクローンを作成するには次のようにします。

git clone codecommit://CodeAccess@MyDemoRepo

Git のコミット、プッシュ、プルコマンドは、通常の Git 構文を使用します。

ユーザーが AWS CLI を使用し、アクセス認証情報の更新に関連付けられた AWS CLI の名前付きプロファイルを指定すると、このプロファイルにスコープされた結果が返されます。