AWSCodeArtifact認証とトークン - CodeArtifact

AWSCodeArtifact認証とトークン

CodeArtifactでは、パッケージバージョンを公開したり消費したりするために、ユーザーがサービスで認証を受ける必要があります。CodeArtifactサービスを利用するには、自分のAWS資格情報を使って認証トークンを作成し、認証を受ける必要があります。認証トークンを作成するには、適切なアクセス権限を持っている必要があります。認証トークンの作成に必要な権限については、「GetAuthorizationToken」の AWS CodeArtifact アクセス許可リファレンス エントリを参照してください。CodeArtifact の権限の一般的な情報については、「AWS CodeArtifact で IAM を使用する方法」を参照してください。

CodeArtifactから認証トークンを取得するには、GetAuthorizationToken API を実行する必要があります。AWS CLIを使用することで、loginまたはget-authorization-tokenコマンドでGetAuthorizationTokenを実行することができます。

注記

Root ユーザーは GetAuthorizationToken を呼び出すことはできません。

  • aws codeartifact login(npm、pip、および twine): このコマンドを使用すると、一般的なパッケージマネージャが CodeArtifactをワンステップで使えるように簡単に設定できます。loginを呼び出すと、GetAuthorizationTokenでトークンを取得し、パッケージマネージャにトークンと正しい CodeArtifactリポジトリのエンドポイントを設定します。

  • 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 ロールの使用 を参照してください。

loginコマンドで作成されたトークン

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

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

パラメータ 必須 説明

--tool

Yes

認証するパッケージマネージャ。指定できる値は npmpip、およびtwineです。

--domain

Yes

リポジトリが属するドメイン名。

--domain-owner

No

ドメインの所有者のID。このパラメータは、自分が認証されていないAWSアカウントが所有しているドメインにアクセスする場合に必要です。詳細については、「クロスアカウントドメイン」を参照してください。

--repository

Yes

認証先のリポジトリの名前。

--duration-seconds

No

ログイン情報が有効な時間 (秒単位)。最小値は 900*で、最大値は43200 です。

--namespace

No

ネームスペースをリポジトリツールに関連付けます。

--dry-run

No

設定を変更せずに、ツールをリポジトリに接続するために実行されるコマンドのみを出力します。

* ロールを担いながら login を呼び出す時にも0の値は有効です。--duration-seconds 0loginを実行すると、引き受けたロールのセッション時間の残り時間と等しい有効期限を持つトークンを作成します。

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

aws codeartifact login --tool npm | pip | twine --domain my_domain --domain-owner 111122223333 --repository my_repo

npm でloginコマンドを実行する具体的方法についてはCodeArtifact で npm を設定して使用するを参照してください。Pythonについては、PythonでCodeArtifactを使う を参照してください。

GetAuthorizationTokenAPIで作成されたトークン

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

詳細については、次のドキュメントを参照してください。

環境変数を使用して認証トークンを渡す

AWSCodeArtifactは、Maven や Gradle などのビルドツールからのリクエストを認証し承認するために、GetAuthorizationTokenAPI によって提供された認証トークンを使用します。それらの認証トークンについての詳細は、GetAuthorizationTokenAPIで作成されたトークンを参照してください。

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

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

  1. AWS CLI をインストールまたはアップグレードしてから設定するにはの説明に従ってAWS資格情報を設定します。

  2. CODEARTIFACT_AUTH_TOKEN 環境変数を設定します:

    注記

    一部のシナリオでは、--domain-owner引数を含める必要はありません。詳細については、「クロスアカウントドメイン」を参照してください。

    • 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認証トークンの取り消し

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

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

長期的な IAM ユーザー資格情報を使用してアクセストークンを作成した場合は、アクセスを拒否するようにユーザーズポリシーを変更するか、IAM ユーザーを削除する必要があります。詳細については、IAM ユーザーのアクセス権限の変更またはIAM ユーザーの削除 を参照してください。