本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
網域政策
CodeArtifact 支援使用資源型許可來控制存取。資源型許可可讓您指定誰可以存取資源,以及他們可以對其執行哪些動作。根據預設,只有擁有網域AWS的帳戶才能建立和存取網域中的儲存庫。您可以將政策文件套用至網域,以允許其他IAM主體存取它。
如需詳細資訊,請參閱政策和許可以及以身分為基礎的政策和以資源為基礎的政策。
啟用網域的跨帳戶存取
資源政策是 JSON 格式的文字檔案。檔案必須指定主體 (執行者)、一或多個動作和效果 (Allow
或 Deny
)。若要在另一個帳戶擁有的網域中建立儲存庫,必須授予主體網域資源的CreateRepository
許可。
例如,下列資源政策會授予帳戶在網域中建立儲存庫的123456789012
許可。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:CreateRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root" }, "Resource": "*" } ] }
若要允許使用標籤建立儲存庫,您必須包含 codeartifact:TagResource
許可。這也會授予帳戶將標籤新增至網域和其中所有儲存庫的存取權。
系統會針對網域和網域內所有資源評估網域政策的所有操作。這表示網域政策可用來將許可套用至網域中的儲存庫和套件。當 Resource
元素設定為 時*
,陳述式會套用至網域中的所有資源。例如,如果上述政策也包含在允許IAM的動作codeartifact:DescribeRepository
清單中,則政策將允許DescribeRepository
對網域中的每個儲存庫進行呼叫。網域政策可用來在 Resource
元素中使用特定資源,將許可套用至網域ARNs中的特定資源。
注意
網域和儲存庫政策都可用來設定許可。當兩個政策都存在時,則會評估兩個政策,如果任一政策允許,則會允許 動作。如需詳細資訊,請參閱儲存庫與網域政策之間的互動。
若要存取另一個 帳戶擁有的網域中的套件,必須授予網域資源 的GetAuthorizationToken
許可。這可讓網域擁有者控制哪些帳戶可以讀取網域中儲存庫的內容。
例如,下列資源政策會授予帳戶123456789012
許可,以擷取網域中任何儲存庫的身分驗證權杖。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:GetAuthorizationToken" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root" }, "Resource": "*" } ] }
注意
想要從儲存庫端點擷取套件的主體,除了網域的ReadFromRepository
許可之外,還必須授予儲存庫資源的GetAuthorizationToken
許可。同樣地,除了 之外,還必須授予想要將套件發佈至儲存庫端點的主體PublishPackageVersion
許可GetAuthorizationToken
。
如需 ReadFromRepository
和 PublishPackageVersion
許可的詳細資訊,請參閱儲存庫政策 。
網域政策範例
當多個帳戶使用網域時,應授予帳戶一組基本許可,以允許完整使用網域。下列資源政策會列出一組允許完整使用網域的許可。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "BasicDomainPolicy", "Action": [ "codeartifact:GetDomainPermissionsPolicy", "codeartifact:ListRepositoriesInDomain", "codeartifact:GetAuthorizationToken", "codeartifact:DescribeDomain", "codeartifact:CreateRepository" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root" } } ] }
注意
如果網域及其所有儲存庫都由單一帳戶擁有,且只需要從該帳戶使用,則您不需要建立網域政策。
網域政策範例 AWS Organizations
您可以使用 aws:PrincipalOrgID
條件金鑰,從組織中的所有帳戶授予 CodeArtifact 網域存取權,如下所示。
{ "Version": "2012-10-17", "Statement": { "Sid": "DomainPolicyForOrganization", "Effect": "Allow", "Principal": "*", "Action": [ "codeartifact:GetDomainPermissionsPolicy", "codeartifact:ListRepositoriesInDomain", "codeartifact:GetAuthorizationToken", "codeartifact:DescribeDomain", "codeartifact:CreateRepository" ], "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID":["o-xxxxxxxxxxx"]} } } }
如需使用aws:PrincipalOrgID
條件索引鍵的詳細資訊,請參閱 IAM 使用者指南 中的AWS全域條件內容索引鍵。
設定網域政策
您可以使用 put-domain-permissions-policy
命令將政策連接至網域。
aws codeartifact put-domain-permissions-policy --domain
my_domain
--domain-owner111122223333
\ --policy-documentfile://</PATH/TO/policy.json>
當您呼叫 時put-domains-permissions-policy
,在評估許可時,會忽略網域上的資源政策。這可確保網域的擁有者無法將自己鎖定在網域之外,這將使他們無法更新資源政策。
注意
您無法將許可授予另一個 AWS 帳戶,以使用資源政策更新網域上的資源政策,因為在呼叫 時會忽略資源政策 put-domain-permissions-policy。
輸出範例:
{ "policy": { "resourceArn": "arn:aws:codeartifact:
region-id
:111122223333
:domain/my_domain
", "document": "{ ...policy document content...}
", "revision": "MQlyyTQRASRU3HB58gBtSDHXG7Q3hvxxxxxxx=
" } }
命令的輸出包含網域資源的 Amazon Resource Name (ARN)、政策文件的完整內容,以及修訂識別碼。put-domain-permissions-policy
修訂識別碼可以使用 --policy-revision
選項傳遞至 。這可確保文件的已知修訂被覆寫,而不是由其他寫入器設定的較新版本。
讀取網域政策
若要讀取政策文件的現有版本,請使用 get-domain-permissions-policy
命令。若要將輸出格式化為可讀性,請使用 --output
和 --query policy.document
搭配 Python json.tool
模組,如下所示。
aws codeartifact get-domain-permissions-policy --domain
my_domain
--domain-owner111122223333
\ --output text --query policy.document | python -mjson.tool
輸出範例:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "BasicDomainPolicy", "Action": [ "codeartifact:GetDomainPermissionsPolicy", "codeartifact:ListRepositoriesInDomain", "codeartifact:GetAuthorizationToken", "codeartifact:CreateRepository" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::
111122223333
:root" } } ] }
刪除網域政策
使用 delete-domain-permissions-policy
命令從網域刪除政策。
aws codeartifact delete-domain-permissions-policy --domain
my_domain
--domain-owner111122223333
輸出的格式與 get-domain-permissions-policy
和 delete-domain-permissions-policy
命令的格式相同。