As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
CodeArtifact suporta o uso de permissões baseadas em recursos para controlar o acesso. Com as permissões baseadas em recursos, você pode especificar quem tem acesso ao recurso e quais ações essas pessoas podem executar nele. Por padrão, somente a conta da AWS proprietária do domínio pode criar e acessar repositórios no domínio. Você pode aplicar um documento de política a um domínio para permitir que outras entidades principais do IAM o acessem.
Para obter mais informações, consulte Políticas e permissões e Políticas baseadas em identidade e políticas baseadas em recursos.
Tópicos
Permitir acesso entre contas a um domínio
Uma política de recursos é um arquivo de texto no formato JSON. O arquivo deve especificar uma entidade principal (ator), uma ou mais ações e um efeito (Allow
ou Deny
). Para criar um repositório em um domínio pertencente a outra conta, a entidade principal deve receber a permissão CreateRepository
no recurso do domínio.
Por exemplo, a política de recursos a seguir concede à conta 123456789012
permissão para criar um repositório no domínio.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"codeartifact:CreateRepository"
],
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012
:root"
},
"Resource": "*"
}
]
}
Para permitir a criação de repositórios com tags, você deve incluir a permissão codeartifact:TagResource
. Isso também dará à conta acesso para adicionar tags ao domínio e a todos os repositórios nele contidos.
A política de domínio é avaliada para todas as operações contra o domínio e todos os recursos dentro do domínio. Isso significa que a política de domínio pode ser usada para aplicar permissões a repositórios e pacotes no domínio. Quando o Resource
elemento é definido como*
, a declaração se aplica a todos os recursos no domínio. Por exemplo, se a política acima também fosse incluída codeartifact:DescribeRepository
na lista de ações permitidas do IAM, a política permitiria chamar DescribeRepository
todos os repositórios no domínio. Uma política de domínio pode ser usada para aplicar permissões a recursos específicos no domínio usando um recurso específico ARNs no Resource
elemento.
nota
As políticas do domínio e do repositório podem ser usadas para configurar permissões. Quando ambas as políticas estiverem presentes, as duas políticas serão avaliadas e uma ação será permitida se permitida por qualquer uma das políticas. Para obter mais informações, consulte Interação entre políticas de repositório e domínio.
Para acessar pacotes em um domínio pertencente a outra conta, uma entidade principal deve receber a permissão GetAuthorizationToken
no recurso do domínio. Isso permite que o proprietário do domínio exerça controle sobre quais contas podem ler o conteúdo dos repositórios no domínio.
Por exemplo, a política de recursos a seguir concede à conta 123456789012
permissão para recuperar um token auth para qualquer repositório no domínio.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"codeartifact:GetAuthorizationToken"
],
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012
:root"
},
"Resource": "*"
}
]
}
nota
Uma entidade principal que deseja buscar pacotes de um endpoint do repositório deve receber a permissão ReadFromRepository
no recurso do repositório além da permissão GetAuthorizationToken
no domínio. Da mesma forma, uma entidade principal que deseja publicar pacotes em um endpoint de repositório deve receber a permissão PublishPackageVersion
além de GetAuthorizationToken
.
Para obter mais informações sobre as permissões ReadFromRepository
e PublishPackageVersion
, consulte Políticas de repositório.
Exemplo de políticas de domínio
Quando várias contas estão usando um domínio, elas devem receber um conjunto básico de permissões para permitir o uso total do domínio. A política de recursos a seguir lista um conjunto de permissões que autorizam o uso total do domínio.
{
"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"
}
}
]
}
nota
Você não precisa criar uma política de domínio se um domínio e todos os respectivos repositórios forem de propriedade de uma única conta e precisarem ser usados somente a partir dessa conta.
Exemplo de política de domínio com AWS Organizations
Você pode usar a chave de aws:PrincipalOrgID
condição para conceder acesso a um CodeArtifact domínio de todas as contas da sua organização, da seguinte maneira.
{
"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"]}
}
}
}
Para obter mais informações sobre como usar a chave de condição aws:PrincipalOrgID
, consulte Chaves de contexto de condição global da AWS no Guia do usuário do IAM.
Definir uma política de domínio
Você pode usar o comando put-domain-permissions-policy
para anexar uma política a um domínio.
aws codeartifact put-domain-permissions-policy --domain
my_domain
--domain-owner111122223333
\ --policy-documentfile://</PATH/TO/policy.json>
Quando você chama put-domains-permissions-policy
, a política de recursos no domínio é ignorada ao avaliar as permissões. Isso garante que o proprietário de um domínio não possa se bloquear do domínio, o que impediria que ele pudesse atualizar a política de recursos.
nota
Você não pode conceder permissões a outra AWS conta para atualizar a política de recursos em um domínio usando uma política de recursos, pois a política de recursos é ignorada durante a chamada put-domain-permissions-policy.
Exemplo de resultado:
{
"policy": {
"resourceArn": "arn:aws:codeartifact:region-id
:111122223333
:domain/my_domain
",
"document": "{ ...policy document content...}
",
"revision": "MQlyyTQRASRU3HB58gBtSDHXG7Q3hvxxxxxxx=
"
}
}
A saída do comando contém o nome do recurso da Amazon (ARN) do recurso do domínio, o conteúdo completo do documento de política e um identificador de revisão. O identificador de revisão pode ser passado para put-domain-permissions-policy
usando a opção --policy-revision
. Isso garante que uma revisão conhecida do documento seja sobrescrita e não uma versão mais recente definida por outro redator.
Ler uma política de domínio
Use o comando get-domain-permissions-policy
para ler uma versão existente de um documento de política. Para formatar a saída para facilitar a leitura, use --output
e --query policy.document
junto com o módulo json.tool
Python da seguinte maneira.
aws codeartifact get-domain-permissions-policy --domain
my_domain
--domain-owner111122223333
\ --output text --query policy.document | python -mjson.tool
Exemplo de resultado:
{
"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"
}
}
]
}
Excluir uma política de domínio
Use o comando delete-domain-permissions-policy
para excluir uma política de um domínio.
aws codeartifact delete-domain-permissions-policy --domain
my_domain
--domain-owner111122223333
O formato da saída é o mesmo que o dos comandos get-domain-permissions-policy
e delete-domain-permissions-policy
.