View a markdown version of this page

AWS CodeArtifact 身分驗證和字符 - CodeArtifact

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

AWS CodeArtifact 身分驗證和字符

CodeArtifact 要求使用者向 服務進行身分驗證,以發佈或取用套件版本。您必須使用 AWS 登入資料建立授權字符,以驗證 CodeArtifact 服務。若要建立授權字符,您必須擁有正確的許可。如需建立授權字符所需的許可,請參閱 中的 GetAuthorizationToken項目AWS CodeArtifact 許可參考。如需 CodeArtifact 許可的一般資訊,請參閱 How AWS CodeArtifact 可與 IAM 搭配使用。

若要從 CodeArtifact 擷取授權字符,您必須呼叫 GetAuthorizationToken API。您可以使用 login或 get-authorization-token命令來 AWS CLI呼叫 GetAuthorizationToken 。

注意

根使用者無法呼叫 GetAuthorizationToken。

  • aws codeartifact login:此命令可讓您輕鬆地設定常用套件管理員,以在單一步驟中使用 CodeArtifact。呼叫 會使用 login 擷取字符,GetAuthorizationToken並使用字符和正確的 CodeArtifact 儲存庫端點設定您的套件管理員。支援的套件管理員如下所示:

    • dotnet

    • npm

    • nuget

    • pip

    • Swift

    • 雙身

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

CodeArtifact 授權字符在預設的 12 小時內有效。權杖的設定生命週期介於 15 分鐘到 12 小時之間。當生命週期過期時,您必須擷取另一個字符。字符生命週期會在呼叫 login或 get-authorization-token 之後開始。

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

使用 login命令建立的字符

aws codeartifact login 命令會使用 擷取字符,GetAuthorizationToken並使用字符和正確的 CodeArtifact 儲存庫端點來設定您的套件管理員。

下表說明 login命令的參數。

參數 必要 描述

--tool

是

要進行身分驗證的套件管理員。可能值為 dotnet、npm、nuget、pip、swift 和 twine。

--domain

是

儲存庫所屬的網域名稱。

--domain-owner

否

網域擁有者的 ID。如果存取您未進行身分驗證 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命令的特定指引,請參閱 搭配 CodeArtifact 設定和使用 npm。如需 Python,請參閱 搭配 Python 使用 CodeArtifact。

呼叫 GetAuthorizationToken API 所需的許可

呼叫 CodeArtifact GetAuthorizationToken API 需要 sts:GetServiceBearerToken和 codeartifact:GetAuthorizationToken許可。

若要搭配 CodeArtifact 儲存庫使用套件管理員,您的 IAM 使用者或角色必須允許 sts:GetServiceBearerToken。雖然 sts:GetServiceBearerToken可以新增至 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-seconds0,將權杖設定為在擔任角色的工作階段持續時間過期時過期。

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 或 Linux:

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

      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 使用者。