

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
<a name="domain-policies"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) e [Políticas baseadas em identidade e políticas baseadas em recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html).

**Topics**
+ [Permitir acesso entre contas a um domínio](#enabling-cross-acount-access-to-a-domain)
+ [Exemplo de políticas de domínio](#domain-policy-example)
+ [Exemplo de política de domínio com AWS Organizations](#domain-policy-example-with-aws-organizations)
+ [Definir uma política de domínio](#set-domain-policy)
+ [Ler uma política de domínio](#reading-a-domain-policy)
+ [Excluir uma política de domínio](#deleting-a-domain-policy)

## Permitir acesso entre contas a um domínio
<a name="enabling-cross-acount-access-to-a-domain"></a>

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.

------
#### [ JSON ]

****  

```
{
    "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 no 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 elemento `Resource` é definido como `*`, a declaração se aplica a todos os recursos no domínio. Por exemplo, se a política acima também incluísse `codeartifact:DescribeRepository` na lista de ações permitidas do IAM, a política permitiria chamar `DescribeRepository` em 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 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 for permitida por qualquer uma das políticas. Para obter mais informações, consulte [Interação entre políticas de repositório e domínio](repo-policies.md#interaction-repo-domain-policies).

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.

------
#### [ JSON ]

****  

```
{
    "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](repo-policies.md).

## Exemplo de políticas de domínio
<a name="domain-policy-example"></a>

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.

------
#### [ JSON ]

****  

```
{
    "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
<a name="domain-policy-example-with-aws-organizations"></a>

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.

------
#### [ JSON ]

****  

```
{
    "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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) no *Guia do usuário do IAM*.

## Definir uma política de domínio
<a name="set-domain-policy"></a>

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 saída:

```
{
    "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
<a name="reading-a-domain-policy"></a>

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 saída:

------
#### [ JSON ]

****  

```
{
    "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
<a name="deleting-a-domain-policy"></a>

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