

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

# AWSCodeArtifact認証とトークン
<a name="tokens-authentication"></a>

CodeArtifactでは、パッケージバージョンを公開したり消費したりするために、ユーザーがサービスで認証を受ける必要があります。CodeArtifact サービスを利用するには、自分の AWS 認証情報を使って認可トークンを作成し、認証を受ける必要があります。認可トークンを作成するには、適切なアクセス権限を持っている必要があります。認可トークンの作成に必要な権限については、「[AWS CodeArtifact アクセス許可リファレンス](auth-and-access-control-permissions-reference.md)」の `GetAuthorizationToken` エントリを参照してください。CodeArtifact の権限の一般的な情報については、「[How AWS CodeArtifact と IAM の連携](security_iam_service-with-iam.md)」を参照してください。

CodeArtifact から認可トークンを取得するには、[GetAuthorizationToken API](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_GetAuthorizationToken.html) を呼び出す必要があります。AWS CLIを使用することで、`login`または`get-authorization-token`コマンドで`GetAuthorizationToken`を実行することができます。

**注記**  
ルートユーザーは `GetAuthorizationToken` を呼び出すことができません。
+ `aws codeartifact login`: このコマンドを使用すると、一般的なパッケージマネージャーが CodeArtifact をワンステップで使えるように簡単に設定できます。`login`を呼び出すと、`GetAuthorizationToken`でトークンを取得し、パッケージマネージャにトークンと正しい CodeArtifactリポジトリのエンドポイントを設定します。次のパッケージマネージャーがサポートされています。
  + dotnet
  + npm
  + nuget
  + pip
  + swift
  + twine
+ `aws codeartifact get-authorization-token`:`login`でサポートされていないパッケージマネージャの場合、直接`get-authorization-token`を呼び出すことができます。その後、必要に応じて、設定します例えばファイルにトークンを追加したり、環境変数に格納するなどして、パッケージマネージャにトークンを設定します。

CodeArtifact 認可トークンは、デフォルトで 12 時間有効です。トークンの有効期限は15分から12時間の間で設定できます。有効期限切れになったら、別のトークンを取得する必要があります。トークンの有効期限は、`login`または`get-authorization-token`が実行されてからカウントダウンされます。

ロールを引き受ける際に`login`または`get-authorization-token`が呼び出された場合、`--duration-seconds`の値を`0`に設定することで、トークンの有効期限がロールのセッション時間の残り時間と同じになるように設定できます。それ以外の場合、トークンの有効期限は、ロールの最大セッション時間とは無関係です。例えば、`sts assume-role` を呼び出して 15 分間のセッション時間を指定し、その後 `login` を呼び出して CodeArtifact 認可トークンを取得するとします。この場合、トークンは15分のセッションよりも長いですが、12時間全体にわたって有効です。セッションの継続時間の制御については、*IAM ユーザーガイド* の中の [IAM ロールの使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) を参照してください。

## `login`コマンドで作成されたトークン
<a name="auth-token-login"></a>

`aws codeartifact login`コマンドは、`GetAuthorizationToken`でトークンを取得し、トークンと正しい CodeArtifactリポジトリエンドポイントを使用してパッケージマネージャを設定します。

次の表では、`login`コマンドのパラメータについて説明します。


****  

| [Parameter] (パラメータ) | 必須 | 説明 | 
| --- | --- | --- | 
| `--tool` | あり | 認証するパッケージマネージャ。想定される値は、`dotnet`、`npm`、`nuget`、`pip`、`swift`、`twine` です。 | 
| `--domain` | あり | リポジトリが属するドメイン名。 | 
| `--domain-owner` | なし | ドメインの所有者のID。このパラメータは、自分が認証されていないAWSアカウントが所有しているドメインにアクセスする場合に必要です。詳細については、「[クロスアカウントドメイン](domain-overview.md#domain-overview-cross-account)」を参照してください。 | 
| `--repository` | あり | 認証先のリポジトリの名前。 | 
| `--duration-seconds` | なし | ログイン情報が有効な時間 (秒単位)。最小値は 900\$1で、最大値は43200 です。 | 
| `--namespace` | なし | ネームスペースをリポジトリツールに関連付けます。 | 
| `--dry-run` | なし | 設定を変更せずに、ツールをリポジトリに接続するために実行されるコマンドのみを出力します。 | 
| \$1 ロールを担いながら `login` を呼び出す時にも0の値は有効です。`--duration-seconds 0`で`login`を実行すると、引き受けたロールのセッション時間の残り時間と等しい有効期限を持つトークンを作成します。 | 

次の例は、`login` コマンドを使用して認可トークンを取得する方法を示しています。

```
aws codeartifact login \
    --tool dotnet | npm | nuget | pip | swift | twine \
    --domain my_domain \
    --domain-owner 111122223333 \
    --repository my_repo
```

npm で`login`コマンドを実行する具体的方法については[CodeArtifact で npm を設定して使用する](npm-auth.md)を参照してください。Pythonについては、[PythonでCodeArtifactを使う](using-python.md) を参照してください。

## `GetAuthorizationToken` API を呼び出すために必要な権限
<a name="get-auth-token-permissions"></a>

CodeArtifact `GetAuthorizationToken` API を呼び出すには、`sts:GetServiceBearerToken` 権限と `codeartifact:GetAuthorizationToken` 権限の両方が必要です。

CodeArtifact リポジトリでパッケージマネージャーを使用するには、IAM ユーザーまたはロールが `sts:GetServiceBearerToken` を許可する必要があります。`sts:GetServiceBearerToken` は、CodeArtifact ドメインリソースポリシーに追加できますが、そのポリシーに影響はしません。

## `GetAuthorizationToken`APIで作成されたトークン
<a name="get-auth-token-api"></a>

CodeArtifact から認可トークンを取得するため、`get-authorization-token` を呼び出します。

```
aws codeartifact get-authorization-token \
    --domain my_domain \
    --domain-owner 111122223333 \
    --query authorizationToken \
    --output text
```

`--duration-seconds`引数を使用して、トークンの有効期限を変更できます。最小値は900で、最大値は43200です。次の例では、1時間(3600 秒)続くトークンを作成します。

```
aws codeartifact get-authorization-token \
    --domain my_domain \
    --domain-owner 111122223333 \
    --query authorizationToken \
    --output text \
    --duration-seconds 3600
```

ロールを引き受けながら`get-authorization-token`を実行する場合、トークンの有効期限は、ロールの最大セッション時間とは無関係です。引き受けたロールのセッション時間が満了したときにトークンが期限切れになるように構成するには、`--duration-seconds`を0に設定します。

```
aws codeartifact get-authorization-token \
    --domain my_domain \
    --domain-owner 111122223333 \
    --query authorizationToken \
    --output text \
    --duration-seconds 0
```

詳細については、次のドキュメントを参照してください。
+ トークンと環境変数のガイダンスについては、[環境変数を使用して認証トークンを渡す](#env-var)を参照してください。
+ Python ユーザーについては、[ログインコマンドを使用せずにpipを設定する](python-configure-pip.md#python-configure-without-pip)または[CodeArtifact で twine を設定して使用する](python-configure-twine.md)を参照してください。
+ Maven ユーザーについては、[Gradle で CodeArtifact を使用する](maven-gradle.md)または[mvn で CodeArtifact を使用する](maven-mvn.md)を参照してください。
+ npmユーザーについては、[login コマンドを使用せずに npm を設定する](npm-auth.md#configuring-npm-without-using-the-login-command)を参照してください。

## 環境変数を使用して認証トークンを渡す
<a name="env-var"></a>

AWS CodeArtifact は、Maven や Gradle などのビルドツールからのリクエストを認証し認可するために、`GetAuthorizationToken` API によって提供された認可トークンを使用します。それらの認証トークンについての詳細は、[`GetAuthorizationToken`APIで作成されたトークン](#get-auth-token-api)を参照してください。

これらの認証トークンは、環境変数に格納してビルドツールで読み取りCodeArtifactリポジトリからパッケージを取得したりパッケージをそのリポジトリに公開したりするために必要なトークンを取得できます。

他ユーザーやプロセスによって読み取られたり、誤ってソース管理にチェックされる危険のあるファイルにトークンを格納するよりも、この方法がセキュリティ上の理由で適しています。

1. [をインストールまたはアップグレードしてから設定する AWS CLI](get-set-up-install-cli.md)の説明に従ってAWS資格情報を設定します。

1. `CODEARTIFACT_AUTH_TOKEN` 環境変数を設定します:
**注記**  
一部のシナリオでは、`--domain-owner`引数を含める必要はありません。詳細については、「[クロスアカウントドメイン](domain-overview.md#domain-overview-cross-account)」を参照してください。
   + macOS、Linux : 

     ```
     export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
     ```
   + Windows (デフォルトのコマンドシェルを使用):

     ```
     for /f %i in ('aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text') do set CODEARTIFACT_AUTH_TOKEN=%i
     ```
   + Windows PowerShell：

     ```
     $env:CODEARTIFACT_AUTH_TOKEN = aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text
     ```

## CodeArtifact 認可トークンの取り消し
<a name="revoke-access"></a>

 認証されたユーザーが CodeArtifactリソースにアクセスするためのトークンを作成すると、そのトークンは変更可能なアクセス期間が終了するまで有効です。デフォルトのアクセス期間は12時間です。場合によっては、アクセス期間が切れる前にトークンへのアクセスを取り消すことができます。次の手順に従って、CodeArtifactリソースへのアクセスを取り消すことができます。

 * 引き受けたロール *または*フェデレーティッドユーザーアクセス *のように一時的なセキュリティ資格情報を使用してアクセストークンを作成した場合は、IAM ポリシーを更新してアクセスを拒否することで、アクセスを取り消すことができます。詳細については、*IAM ユーザーガイド *の[一時的なセキュリティ資格情報の許可を無効にする](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_disable-perms.html)を参照してください。

 長期的な IAM ユーザー資格情報を使用してアクセストークンを作成した場合は、アクセスを拒否するようにユーザーズポリシーを変更するか、IAM ユーザーを削除する必要があります。詳細については、[IAM ユーザーのアクセス権限の変更](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)または[IAM ユーザーの削除 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_deleting)を参照してください。