

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

# 認証情報をローテーションして AWS CodeCommit リポジトリに接続する
<a name="temporary-access"></a>

IAM ユーザーを設定したり、アクセスキーとシークレットキーを使用したりすることなく、 AWS CodeCommit リポジトリへのアクセスをユーザーに許可できます。フェデレーテッドアイデンティティに許可を割り当てるには、ロールを作成してそのロールの許可を定義します。フェデレーテッド ID が認証されると、その ID はロールに関連付けられ、ロールで定義されている許可が付与されます。フェデレーションのロールについては、*IAM ユーザーガイド* の [サードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html) を参照してください。IAM Identity Center を使用する場合は、許可セットを設定します。アイデンティティが認証後にアクセスできるものを制御するため、IAM Identity Center は、権限セットを IAM のロールに関連付けます。アクセス許可セットの詳細については、*AWS IAM アイデンティティセンター User Guide* の [Permission sets](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) を参照してください。また、IAM ユーザーが別のアマゾン ウェブ サービスアカウントの CodeCommit リポジトリにアクセスするためのロールベースのアクセスを設定することもできます (*cross-account アクセス*と呼ばれるテクニック)。リポジトリへのクロスアカウントアクセスを設定するためのウォークスルーは、「[ロールを使用して AWS CodeCommit リポジトリへのクロスアカウントアクセスを設定する](cross-account.md)」を参照してください。

以下のような方法で認証する必要のあるユーザーに、アクセスを設定できます。
+ 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 接続のセットアップ手順](setting-up-git-remote-codecommit.md)」を参照してください。  
アクセス認証情報の更新や一時的なアクセス認証情報で CodeCommit リポジトリに接続するのに、SSH あるいは Git 認証情報および HTTPS を使用することはできません。

以下のすべての要件が当てはまる場合には、これらのステップを実行する必要はありません。
+ Amazon EC2 インスタンスにサインインしている。
+  AWS CLI 認証情報ヘルパーで Git と HTTPS を使用して、Amazon EC2 インスタンスから CodeCommit リポジトリに接続します。
+ Amazon EC2 インスタンスに、[ AWS CLI 認証情報ヘルパーを使用した Linux、macOS、または Unix での HTTPS 接続の場合](setting-up-https-unixes.md) または [ AWS CLI 認証情報ヘルパーを使用した Windows での HTTPS 接続の場合](setting-up-https-windows.md) で説明されているアクセス許可を含む IAM インスタンスプロファイルがアタッチされている。
+ [ AWS CLI 認証情報ヘルパーを使用した Linux、macOS、または Unix での HTTPS 接続の場合](setting-up-https-unixes.md) または [ AWS CLI 認証情報ヘルパーを使用した Windows での HTTPS 接続の場合](setting-up-https-windows.md) で説明されているように、Amazon EC2 インスタンスに Git 認証情報ヘルパーがインストールおよび設定されている。

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

**注記**  
Amazon EC2 インスタンスでは、**git-remote-codecommit** を設定および使用することができます。

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



## ステップ 1: 前提条件を満たす
<a name="temporary-access-prerequisites"></a>

設定ステップを実行し、認証情報の更新を使用して CodeCommit リポジトリへのアクセスをユーザーに許可します。
+ cross-account アクセスについては、[チュートリアル: IAM ロールを使用したアマゾン ウェブ サービスアカウント間でのアクセスの委任](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-walkthrough-crossacct.html)および [ロールを使用して AWS CodeCommit リポジトリへのクロスアカウントアクセスを設定する](cross-account.md) を参照してください。
+ SAML とフェデレーションについては、[「組織の認証システムを使用して AWS リソースへのアクセス権を付与する](https://docs.aws.amazon.com/STS/latest/UsingSTS/STSUseCases.html#IdentityBrokerApplication)」および[「SAML 2.0 AWS STS ベースのフェデレーションについて](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSAML.html)」を参照してください。
+ MFA については、[AWSでの多要素認証 (MFA) デバイスの使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingMFA.html)と[ IAM ユーザーにアクセスを許可する一時的なセキュリティ認証情報の作成](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSessionTokens.html)を参照してください。
+ Login with Amazon、Amazon Cognito、Facebook、Google、または OIDC 互換 ID プロバイダーについては、[AWS STS 「ウェブ ID フェデレーションについて](https://docs.aws.amazon.com/STS/latest/UsingSTS/web-identity-federation.html)」を参照してください。

[の認証とアクセスコントロール AWS CodeCommit](auth-and-access-control.md) の情報を使用して、ユーザーに付与する CodeCommit アクセス許可を指定します。

## ステップ 2: ロール名またはアクセス認証情報を取得する
<a name="temporary-access-get-credentials"></a>

ユーザーがロールを引き受けることによってリポジトリにアクセスできるようにするには、そのロールの Amazon リソースネーム (ARN) をユーザーに提供します。それ以外の場合、アクセス権の設定方法に応じて、ユーザーは次のいずれかの方法で認証情報の更新を取得できます。
+ クロスアカウントアクセスの場合は、 AWS CLI [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) コマンドを呼び出すか、 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API を呼び出します。
+ SAML の場合は、 AWS CLI [assume-role-with-saml](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html) コマンドまたは AWS STS [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) API を呼び出します。
+ フェデレーションの場合は、the AWS CLI [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) または [get-federation-token](https://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html) コマンド、 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) または [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) APIs。
+ MFA の場合は、 AWS CLI [get-session-token](https://docs.aws.amazon.com/cli/latest/reference/sts/get-session-token.html) コマンドまたは AWS STS [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) API を呼び出します。
+ Login with Amazon、Amazon Cognito、Facebook、Google、または OIDC 互換 ID プロバイダーの場合は、 AWS CLI [assume-role-with-web-identity](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) コマンドまたは AWS STS [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) API を呼び出します。



## ステップ 3: git-remote-codecommit をインストールして を設定する AWS CLI
<a name="temporary-access-configure-credentials"></a>

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

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

1. 次のいずれかの方法で、認証情報をユーザー AWS CLI の名前付きプロファイルに関連付けることができます。
   + CodeCommit にアクセスするロールを引き受ける場合は、そのロールを引き受けるのに必要な情報を含む名前付きプロファイルを設定します。例えば、Amazon Web Services アカウント 111111111111 で *CodeCommitAccess* という名前のロールを引き受ける場合は、他の AWS リソースを操作するときに使用するデフォルトプロファイルと、そのロールを引き受けるときに使用する名前付きプロファイルを設定できます。次のコマンドは、*CodeCommitAccess* という名前のロールを引き受ける、名前付きプロファイルの *CodeAccess* を作成します。*Maria\$1Garcia* というユーザー名がセッションに関連付けられ、デフォルトのプロファイルが 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 トークンファイル \$1/*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の設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)と[AWS CLIでの IAM ロールの使用](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html)を参照してください。

## ステップ 4: CodeCommit リポジトリにアクセスする
<a name="temporary-access-use-credentials"></a>

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

```
git clone codecommit://CodeAccess@MyDemoRepo
```

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

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

