AWS CodeArtifact 身份驗證和令牌 - CodeArtifact

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS CodeArtifact 身份驗證和令牌

CodeArtifact 要求使用者透過服務進行驗證,才能發佈或使用套件版本。您必須使用憑據創建授權令牌來對 CodeArtifact 服務進行身份驗 AWS 證。為了創建授權令牌,您必須具有正確的權限。如需建立授權權杖所需的權限,請參閱中的GetAuthorizationToken項目AWS CodeArtifact 權限參考。如需有關 CodeArtifact 權限的更多一般資訊,請參閱如何與 IAM AWS CodeArtifact 搭配使用

要從中獲取授權令牌 CodeArtifact,您必須調用 GetAuthorizationToken API。使用 AWS CLI,您可以使GetAuthorizationTokenloginget-authorization-token命令來呼叫。

注意

根使用者無法呼叫GetAuthorizationToken

  • aws codeartifact login:這個命令可讓您輕鬆設定一般套件管理員,以便 CodeArtifact 在單一步驟中使用。調用login獲取令牌,GetAuthorizationToken並使用令牌和正確 CodeArtifact 的存儲庫端點配置您的包管理器。支持包管理器如下:

    • dotnet

    • NPM

    • 金塊

    • pip

    • 迅速

    • 纏繞

  • aws codeartifact get-authorization-token: 對於不受支援的套件管理員login,您可以get-authorization-token直接呼叫,然後根據需要使用 Token 來設定套件管理員,例如,將它新增至組態檔或將其儲存為環境變數。

CodeArtifact 授權令牌在 12 小時的默認時間內有效。令牌可以在 15 分鐘到 12 小時之間配置生命週期。當生命週期到期時,您必須獲取另一個令牌。令牌生命週期在loginget-authorization-token被調用之後開始。

如果get-authorization-token在假設角色時呼叫login或,您可以將值設定為,將權杖的生命週期設定為等於角色工作階段持續時間中的剩餘時間0--duration-seconds否則,權杖存留期與角色的工作階段持續時間上限無關。例如,假設您呼叫sts assume-role並指定 15 分鐘的工作階段持續時間,然後呼叫login以擷取 CodeArtifact 授權權杖。在這種情況下,即使這比 15 分鐘的會話持續時間長,令牌在整個 12 小時內有效。如需控制工作階段持續時間的相關資訊,請參閱 IAM 使用者指南中的使用 IAM 角色。

使用login指令建立的權杖

aws codeartifact login命令將獲取令牌,GetAuthorizationToken並使用令牌和正確的 CodeArtifact 存儲庫端點配置您的包管理器。

下表說明命login令的參數。

參數 必要 描述

--tool

要驗證的套件管理員。可能的值為dotnetnpmnugetpipswifttwine

--domain

存放庫所屬的網域名稱。

--domain-owner

網域擁有者的識別碼。如果存取您未經驗證的 AWS 帳戶所擁有的網域,則需要此參數。如需詳細資訊,請參閱「跨帳戶網域」。

--repository

要進行驗證的存放庫名稱。

--duration-seconds

登入資訊有效的時間 (以秒為單位)。最小值為 900*,最大值為 43200。

--namespace

將命名空間與儲存庫工具相關聯。

--dry-run

僅列印將執行的指令,以連接您的工具與儲存庫,而不對您的組態進行任何變更。

* login 在假設角色時調用時,值為 0 也是有效的。login使用調用會--duration-seconds 0創建一個令牌,其生命週期等於假定角色的會話持續時間中的剩餘時間。

下面的示例演示了如何使用命令獲取授權login令牌。

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

如需如何搭配 npm 使用指login令的特定指引,請參閱配置和使用 npm CodeArtifact。如需 Python,請參閱使用CodeArtifact與蟒蛇

使用 GetAuthorizationToken API 建立的權杖

您可以調get-authorization-token用從中獲取授權令牌 CodeArtifact。

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

如需詳細資訊,請參閱下列文件:

使用環境變量傳遞身份驗證令牌

AWS CodeArtifact 使用 GetAuthorizationToken API 提供的授權令牌來驗證和授權構建工具(例如 Maven 和 Gradle)的請求。有關這些身份驗證令牌的更多信息,請參閱使用 GetAuthorizationToken API 建立的權杖

您可以將這些身份驗證令牌存儲在可以由構建工具讀取的環境變量中,以獲取從 CodeArtifact 存儲庫中獲取軟件包或將軟件包發佈到其中所需的令牌。

出於安全原因,這種方法比將令牌存儲在可能被其他用戶或進程讀取的文件中,或者意外簽入源代碼控制中的文件中更好。

  1. 如中所述設定您的 AWS 認證安裝或升級,然後設定 AWS CLI

  2. 設定 CODEARTIFACT_AUTH_TOKEN 環境變數:

    注意

    在某些情況下,您不需要包含引--domain-owner數。如需詳細資訊,請參閱 跨帳戶網域

    • macOS 系統或

      export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
    • 視窗 (使用預設命令介面):

      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
    • 視窗 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 使用者