AWS CodeCommit 不再提供給新客戶。的現有客戶 AWS CodeCommit 可以繼續正常使用服務。進一步了解」
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS CodeCommit的身分驗證與存取控制
存取 AWS CodeCommit 需要登入資料。這些登入資料必須具有存取 AWS 資源的許可,例如 CodeCommit 儲存庫,以及您用來管理 Git 登入資料或用於建立 Git 連線的 SSH 公有金鑰的 IAM 使用者。下列各節提供如何使用 AWS Identity and Access Management (IAM) 和 CodeCommit 協助安全存取 資源的詳細資訊:
身分驗證
由於 CodeCommit 儲存庫是以 Git 為基礎,並支援 Git 的基本功能,包括 Git 登入資料,我們建議您在使用 CodeCommit 時使用 IAM 使用者。您可以使用其他身分類型存取 CodeCommit,但其他身分類型會受到限制,如下所述。
身分類型:
-
IAM 使用者 – IAM 使用者是您 Amazon Web Services 帳戶中具有特定自訂許可的身分。例如,IAM 使用者可以擁有建立和管理 Git 登入資料的許可,以存取 CodeCommit 儲存庫。這是使用 CodeCommit 的建議使用者類型。您可以使用 IAM 使用者名稱和密碼登入保護 AWS 網頁,例如 AWS 管理主控台
、AWS 開發論壇 或 AWS 支援 中心 。 您可以產生 Git 登入資料,或將 SSH 公有金鑰與 IAM 使用者建立關聯,也可以安裝和設定 git-remote-codecommit。這些是設定 Git 以使用 CodeCommit 儲存庫的最簡單方法。使用 Git 登入資料,您可以在 IAM 中產生靜態使用者名稱和密碼。然後,使用這些登入資料,對 Git 及支援 Git 使用者名稱和密碼身分驗證的任何第三方工具,建立 HTTPS 連線。使用 SSH 連接,您可以在本機電腦上建立 Git 和 CodeCommit 用於 SSH 身分驗證的公有和私有金鑰檔案。您可以將公有金鑰與 IAM 使用者建立關聯,並將私有金鑰存放在本機機器上。 git-remote-codecommit會擴展 Git 本身,而且不需要為使用者設定 Git 登入資料。
此外,您可以為每個使用者產生存取金鑰。當您透過其中一個 AWS SDKs
或使用 AWS Command Line Interface (AWS CLI) 以程式設計方式存取 AWS 服務時,請使用存取金鑰。軟體開發套件和 CLI 工具會使用存取金鑰,以加密方式簽署您的請求。如果您不使用 AWS 工具,則必須自行簽署請求。CodeCommit 支援 Signature 第 4 版,這是用於驗證傳入 API 請求的通訊協定。如需有關驗證請求的詳細資訊,請參閱《AWS 一般參考》中的 Signature 第 4 版簽署程序。 -
Amazon Web Services 帳戶根使用者 – 當您註冊時 AWS,請提供與您的 Amazon Web Services 帳戶相關聯的電子郵件地址和密碼。這些是您的根憑證,可完整存取您的所有 AWS 資源。有些 CodeCommit 功能不適用於根帳戶使用者。此外,搭配根帳戶使用 Git 的唯一方法是安裝和設定 git-remote-codecommit(建議) 或設定 AWS 登入資料協助程式,這包含在 中 AWS CLI。Git 登入資料或 SSH 公有私有金鑰對不能與根帳戶使用者一起使用。基於這些原因,我們不建議您在與 CodeCommit 互動時使用根帳戶使用者。
重要
基於安全理由,建議您只在建立管理員使用者時使用根憑證,這是擁有 AWS 帳戶完整許可的 IAM 使用者。然後,您可以使用此管理員使用者建立其他 IAM 使用者和角色,並授予有限許可。如需詳細資訊,請參閱《IAM 使用者指南》https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#create-iam-users中的IAM 最佳實務和建立 Admin (管理員) 使用者和群組。
-
IAM Identity Center 和 IAM Identity Center 中的使用者 – AWS IAM Identity Center 擴展 的功能 AWS Identity and Access Management ,以提供集中管理使用者及其對 AWS 帳戶 和雲端應用程式的存取。雖然建議大多數使用 的使用者採用最佳實務 AWS,但 IAM Identity Center 目前不提供 Git 登入資料或 SSH 金鑰對的機制。這些使用者可以安裝和設定 git-remote-codecommit以本機複製 CodeCommit 儲存庫,但並非所有整合的開發環境 (IDEs) 都支援使用 複製、推送或提取git-remote-codecommit。
最佳實務是要求人類使用者使用聯合身分提供者,以 AWS 服務 使用臨時憑證存取 。
聯合身分是來自您企業目錄、Web 身分提供者的使用者,或使用來自身分來源的 AWS 服務 憑證存取 Directory Service 的使用者。聯合身分會擔任提供臨時登入資料的角色。
對於集中式存取管理,我們建議使用 AWS IAM Identity Center。如需詳細資訊,請參閱 AWS IAM Identity Center 使用者指南中的什麼是 IAM Identity Center?。
-
IAM 角色 – 與 IAM 使用者一樣,IAM 角色是您可以在帳戶中建立的 IAM 身分,以授予特定許可。
IAM 角色是具有特定許可的身分,可提供臨時登入資料。您可以透過從使用者切換到 IAM 角色 (主控台) 或呼叫 AWS CLI 或 AWS API 操作來擔任角色。如需詳細資訊,請參閱《IAM 使用者指南》中的擔任角色的方法。
IAM 角色適用於聯合身分使用者存取、臨時 IAM 使用者許可、跨帳戶存取、跨服務存取,以及在 Amazon EC2 上執行的應用程式。如需詳細資訊,請參閱 IAM 使用者指南中的 IAM 中的快帳戶資源存取。
注意
Git 登入資料或 SSH 公有私有金鑰對不能與聯合身分使用者一起使用。此外,使用者偏好設定不適用於聯合身分使用者。如需如何使用聯合存取設定連線的相關資訊,請參閱AWS CodeCommit 使用 git-remote-codecommit 對 HTTPS 連線的設定步驟。
存取控制
您可以擁有有效的登入資料來驗證請求,但除非您具有許可,否則無法建立或存取 CodeCommit 資源。例如,您必須有許可來檢視儲存庫、推送程式碼、建立和管理 Git 登入資料等等。
下列各節說明如何管理 CodeCommit 的許可。我們建議您先閱讀概觀。
管理 CodeCommit 資源存取許可的概觀
每個 AWS 資源都由 Amazon Web Services 帳戶擁有。建立或存取資源的許可由許可政策所控管。帳戶管理員可以將許可政策連接到 IAM 身分 (即使用者、群組和角色)。有些 服務,例如 AWS Lambda,也支援將許可政策連接到 資源。
注意
帳戶管理員 (或管理員使用者) 是具有管理員權限的使用者。如需詳細資訊,請參《IAM 使用者指南》中的 IAM 最佳實務。
授予許可時,您會決定誰取得許可、為了哪些資源而取得許可,以及您允許對這些資源進行的特定動作。
CodeCommit 資源和操作
在 CodeCommit 中,主要資源是儲存庫。每個資源都有一個相關聯的唯一 Amazon Resource Name (ARN)。在政策中,您使用 Amazon Resource Name (ARN) 來識別要套用政策的資源。如需 ARN 的詳細資訊,請參閱《Amazon Web Services 一般參考》中的 Amazon Resource Name (ARN) 與 AWS 服務命名空間。CodeCommit 目前不支援其他資源類型,稱為子資源。
下表說明如何指定 CodeCommit 資源。
| 資源類型 | ARN 格式 |
|---|---|
| 儲存庫 |
arn:aws:codecommit: |
|
所有 CodeCommit 儲存庫 |
arn:aws:codecommit:* |
|
指定 中指定帳戶擁有的所有 CodeCommit 儲存庫 AWS 區域 |
arn:aws:codecommit: |
注意
大多數 AWS 服務會將 ARNs 中的冒號 (:) 或正斜線 (/) 視為相同的字元。不過,CodeCommit 需要完全符合資源模式和規則。在建立事件模式時,請務必使用正確的 ARN 字元,使這些字元在資源中符合 ARN 語法。
例如,您可以在陳述式中使用 ARN 指定特定的儲存庫 (MyDemoRepo),如下所示:
"Resource": "arn:aws:codecommit:us-west-2:111111111111:MyDemoRepo"
若要指定屬於特定帳戶的所有儲存庫,請使用萬用字元 (*),如下所示:
"Resource": "arn:aws:codecommit:us-west-2:111111111111:*"
若要指定所有資源,或如果特定的 API 動作不支援 ARN,請在 Resource 元素中使用萬用字元 (*),如下所示:
"Resource": "*"
您也可以使用萬用字元 (*),以指定與儲存庫名稱局部相符的所有資源。例如,下列 ARN 會指定任何以 名稱開頭,MyDemo並在 111111111111中向 Amazon Web Services 帳戶註冊的 CodeCommit us-east-2 儲存庫 AWS 區域:
arn:aws:codecommit:us-east-2:111111111111:MyDemo*
如需使用 CodeCommit 資源的可用操作清單,請參閱 CodeCommit 許可參考。
了解資源所有權
Amazon Web Services 帳戶擁有在帳戶中建立的資源,無論建立的人員為何。具體而言,資源擁有者是驗證資源建立請求的委託人實體 (即根帳戶、IAM 使用者或 IAM 角色) 的 Amazon Web Services 帳戶。下列範例說明其如何運作:
-
如果您在 Amazon Web Services 帳戶中建立 IAM 使用者,並將建立 CodeCommit 資源的許可授予該使用者,則使用者可以建立 CodeCommit 資源。不過,使用者所屬的 Amazon Web Services 帳戶擁有 CodeCommit 資源。
-
如果您使用 Amazon Web Services 帳戶的根帳戶登入資料來建立規則,您的 Amazon Web Services 帳戶即為 CodeCommit 資源的擁有者。
-
如果您在 Amazon Web Services 帳戶中建立具有建立 CodeCommit 資源許可的 IAM 角色,則任何可以擔任該角色的人都可以建立 CodeCommit 資源。角色所屬的 Amazon Web Services 帳戶擁有 CodeCommit 資源。
管理 資源的存取
若要管理 AWS 資源的存取,您可以使用 許可政策。許可政策描述誰可以存取哪些資源。以下部分說明用來建立許可政策的選項。
注意
本節討論在 CodeCommit 的內容中使用 IAM。它不提供 IAM 服務的詳細資訊。如需 IAM 的詳細資訊,請參閱《IAM 使用者指南》中的什麼是 IAM?。 如需有關 IAM 政策語法和說明的資訊,請參閱IAM 使用者指南中的 IAM 政策參考。
連接至 IAM 身分的許可政策稱為以身分為基礎的政策 (IAM 政策)。連接到資源的許可政策稱為資源型政策。目前,CodeCommit 僅支援以身分為基礎的政策 (IAM 政策)。
身分類型政策 (IAM 政策)
若要管理對 AWS 資源的存取,請將許可政策連接至 IAM 身分。在 CodeCommit 中,您可以使用身分型政策來控制對儲存庫的存取。例如,您可以執行下列動作:
-
將許可政策連接至您帳戶中的使用者或群組 – 若要授予使用者在 CodeCommit 主控台中檢視 CodeCommit 資源的許可,請將身分型許可政策連接至使用者或使用者所屬的群組。
-
將許可政策連接至角色 (授予跨帳戶許可) – 委派,例如當您想要授予跨帳戶存取權時,涉及在擁有資源的帳戶 (信任帳戶) 與包含需要存取資源之使用者的帳戶 (信任帳戶) 之間設定信任。許可政策授予角色的使用者對資源執行預定任務所需的許可。信任政策指定允許哪些受信任帳戶授予其使用者擔任角色的許可。如需詳細資訊,請參閱 IAM 術語和概念。
若要授予跨帳戶許可,請將身分型許可政策連接至 IAM 角色。例如,帳戶 A 中的管理員可以建立角色,將跨帳戶許可授予另一個 Amazon Web Services 帳戶 (例如帳戶 B) 或 AWS 服務,如下所示:
-
帳戶 A 管理員建立 IAM 角色,並將許可政策連接到可授與帳戶 A 中資源許可的角色。
-
帳戶 A 管理員將信任政策連接至該角色,識別帳戶 B 做為可擔任該角的委託人。
-
帳戶 B 管理員接著可以將擔任該角色的許可委派給帳戶 B 中的任何使用者。這樣做可讓帳戶 B 中的使用者建立或存取帳戶 A 中的資源。如果您想要授予 AWS 服務擔任該角色的許可,信任政策中的委託人也可以是 AWS 服務委託人。如需詳細資訊,請參閱 IAM 術語和概念中的委派。
如需使用 IAM 來委派許可的相關資訊,請參閱《IAM 使用者指南》中的存取管理。
-
下列範例政策允許使用者在名為 MyDemoRepo 的儲存庫中建立分支:
若要限制您帳戶中使用者可存取的呼叫和資源,請建立特定的 IAM 政策,然後將這些政策連接到 IAM 使用者。如需如何建立 IAM 角色和探索 CodeCommit 範例 IAM 政策陳述式的詳細資訊,請參閱 客戶受管身分政策範例。
資源型政策
有些 服務,例如 Amazon S3,也支援以資源為基礎的許可政策。例如,您可以將資源型政策連接至 S3 儲存貯體,以管理該儲存貯體的存取許可。CodeCommit 不支援以資源為基礎的政策,但您可以使用標籤來識別資源,然後您可以在 IAM 政策中使用。如需以標籤為基礎的政策範例,請參閱身分類型政策 (IAM 政策)。
CodeCommit 中的資源範圍
在 CodeCommit 中,您可以將身分型政策和許可範圍限定為 資源,如 中所述CodeCommit 資源和操作。但是,您無法將 ListRepositories 許可的範圍限定於某個資源。反之,您必須將其範圍開放給所有資源 (使用萬用字元 *)。否則,動作會失敗。
所有其他 CodeCommit 許可可以範圍限定為 資源。
指定政策元素:資源、動作、效果和委託人
您可以建立政策來允許或拒絕使用者存取資源,或拒絕使用者對這些資源採取特定動作。CodeCommit 定義一組公有 API 操作,可定義使用者使用 服務的方式,無論是透過 CodeCommit 主控台、 SDKs AWS CLI、 還是直接呼叫這些 APIs。若要授予這些 API 操作的許可,CodeCommit 會定義一組您可以在政策中指定的動作。
某些 API 操作會需要多個動作的許可。如需資源與 API 操作的詳細資訊,請參閱 CodeCommit 資源和操作 與 CodeCommit 許可參考.
以下是政策的基本元素:
-
資源 – 若要識別政策套用的資源,請使用 Amazon Resource Name (ARN)。如需詳細資訊,請參閱CodeCommit 資源和操作。
-
動作 – 若要識別您要允許或拒絕的資源操作,請使用動作關鍵字。例如,根據指定的
Effect,codecommit:GetBranch許可會允許或拒絕使用者執行GetBranch操作,以取得 CodeCommit 儲存庫中分支的詳細資訊。 -
效果 – 您可以指定當使用者請求特定動作時,允許或拒絕的效果。如果您未明確授予存取 (允許) 資源,則隱含地拒絕存取。您也可以明確拒絕存取資源,以確保即使另一個政策授予存取,使用者也無法存取該資源。
-
委託人 – 在以身分為基礎的政策 (IAM 政策) 中,CodeCommit 支援的唯一政策類型,附加政策的使用者是隱含委託人。
若要進一步了解 IAM 政策語法,請參閱《IAM 使用者指南》中的 IAM 政策參考。
如需顯示所有 CodeCommit API 動作及其適用的資源的表格,請參閱 CodeCommit 許可參考。
在政策中指定條件
當您授予許可時,您可以使用 IAM 的存取政策語言來指定政策應生效的條件。例如,建議只在特定日期之後套用政策。如需以政策語言指定條件的詳細資訊,請參閱《IAM 使用者指南》中的條件和政策文法。
欲表示條件,您可以使用預先定義的條件金鑰。CodeCommit 沒有特定的條件索引鍵。不過,您可以視需要使用 AWS全局條件索引鍵。如需 AWS全系列金鑰的完整清單,請參閱《IAM 使用者指南》中的條件的可用金鑰。