Políticas de domínio - CodeArtifact

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á.

Políticas de domínio

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 AWS conta 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 outros IAM diretores 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.

Permitir acesso entre contas a um domínio

Uma política de recursos é um arquivo de texto em JSON formato. 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 estivesse incluída codeartifact:DescribeRepository na lista de IAM ações permitidas, a política permitiria chamar DescribeRepository todos os repositórios do 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 de domínio e 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 o uso da chave de aws:PrincipalOrgID condição, consulte Chaves de contexto de condição AWS global no Guia IAM do usuário.

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-owner 111122223333 \ --policy-document file://</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 Amazon Resource Name (ARN) do recurso de 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-owner 111122223333 \ --output text --query policy.document | python -m json.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-owner 111122223333

O formato da saída é o mesmo que o dos comandos get-domain-permissions-policy e delete-domain-permissions-policy.