

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

# Exemplos de políticas de repositório privado no Amazon ECR
<a name="repository-policy-examples"></a>

**Importante**  
Os exemplos de políticas de repositório nesta página destinam-se a ser aplicados a repositórios privados do Amazon ECR. Eles não funcionarão corretamente se forem usados diretamente com um entidade principal IAM, a menos que sejam modificados para especificar o repositório Amazon ECR como o recurso. Para obter mais informações sobre a definição de políticas de repositório, consulte [Configurar uma declaração de política de repositório privado no Amazon ECR](set-repository-policy.md).

As políticas de repositório do Amazon ECR são um subconjunto de políticas do IAM que têm como escopo e são usadas especificamente para controlar o acesso a repositórios individuais do Amazon ECR. As políticas do IAM geralmente são usadas para aplicar permissões a todo o serviço Amazon ECR, mas também podem ser usadas para controlar o acesso a recursos específicos. Para obter mais informações, consulte [Políticas de repositório versus políticas do IAM](repository-policies.md#repository-policy-vs-iam-policy).

Os exemplos a seguir de políticas de repositório mostram declarações de permissão que você poderia usar para controlar o acesso aos seus repositórios privados do Amazon ECR.

**Importante**  
O Amazon ECR exige que os usuários tenham permissão para fazer chamadas para a API `ecr:GetAuthorizationToken` por meio de uma política do IAM antes que possam fazer a autenticação para um registro e enviar e extrair qualquer imagem de um repositório do Amazon ECR. O Amazon ECR fornece várias políticas gerenciadas do IAM para controlar o acesso do usuário em diversos níveis. Para obter mais informações, consulte [Exemplos de políticas baseadas em identidade do Amazon Elastic Container Registry](security_iam_id-based-policy-examples.md).

## Exemplo: permitir um ou mais usuários do
<a name="IAM_within_account"></a>

A política de repositório a seguir permite que um ou mais usuários do enviem e extraiam imagens de e para um repositório.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPushPull",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/push-pull-user-1",
                    "arn:aws:iam::111122223333:user/push-pull-user-2"
                ]
            },
            "Action": [
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability",
                "ecr:CompleteLayerUpload",
                "ecr:GetDownloadUrlForLayer",
                "ecr:InitiateLayerUpload",
                "ecr:PutImage",
                "ecr:UploadLayerPart"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Exemplo: permitir outra conta
<a name="IAM_allow_other_accounts"></a>

A política de repositório a seguir permite que uma conta específica insira imagens.

**Importante**  
A conta para a qual você está concedendo permissões deve ter a região na qual você está criando a política de repositório ativada, caso contrário, ocorrerá um erro.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCrossAccountPush",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:CompleteLayerUpload",
                "ecr:InitiateLayerUpload",
                "ecr:PutImage",
                "ecr:UploadLayerPart"
            ],
            "Resource": "*"
        }
    ]
}
```

------

A política de repositório a seguir permite que alguns usuários extraiam imagens (*pull-user-1*e*pull-user-2*) enquanto fornecem acesso total a outra (*admin-user*).

**nota**  
Para políticas de repositório mais complicadas que atualmente não são suportadas no Console de gerenciamento da AWS, você pode aplicar a política com o [https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html](https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html) AWS CLI comando.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPull",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/pull-user-1",
                    "arn:aws:iam::111122223333:user/pull-user-2"
                ]
            },
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowAll",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/admin-user"
            },
            "Action": [
                "ecr:*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Exemplo: negar tudo
<a name="IAM_deny_all"></a>

A política de repositório a seguir nega a todos os usuários a capacidade de extrair imagens.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyPull",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Exemplo: restringir o acesso a endereços IP específicos
<a name="IAM_restrict_ip"></a>

O exemplo a seguir nega permissões a qualquer usuário para executar qualquer operação do Amazon ECR quando aplicada a um repositório de uma faixa específica de endereços.

A condição nesta declaração identifica o `54.240.143.*` intervalo de endereços IP permitidos do Protocolo de Internet versão 4 (IPv4).

O `Condition` bloco usa as `NotIpAddress` condições e a chave de `aws:SourceIp` condição, que é uma chave AWS de condição ampla. Para obter mais informações sobre chaves de condição, consulte [Chaves de contexto de condição globais da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html). Os `aws:sourceIp` IPv4 valores usam a notação CIDR padrão. Para obter mais informações, consulte [Operadores de condição de endereço IP](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_IPAddress) no *Guia do usuário do IAM*.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "ECRPolicyId1",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "ecr:*",
            "Resource": "*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "54.240.143.0/24"
                }
            }
        }
    ]
}
```

------

## Exemplo: Permitir um AWS serviço
<a name="IAM_service_linked"></a>

A política de repositório a seguir permite o AWS CodeBuild acesso às ações de API do Amazon ECR necessárias para a integração com esse serviço. Ao usar o exemplo a seguir, você deve usar as chaves de condição `aws:SourceArn` e `aws:SourceAccount` para definir o escopo de quais recursos que podem assumir essas permissões. Para obter mais informações, consulte a [amostra do Amazon ECR CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-ecr.html) no *Guia do AWS CodeBuild usuário*.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"CodeBuildAccess",
         "Effect":"Allow",
         "Principal":{
            "Service":"codebuild.amazonaws.com"
         },
         "Action":[
            "ecr:BatchGetImage",
            "ecr:GetDownloadUrlForLayer"
         ],
         "Resource": "*",
         "Condition":{
            "ArnLike":{
               "aws:SourceArn":"arn:aws:codebuild:us-east-1:123456789012:project/project-name"
            },
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
            }
         }
      }
   ]
}
```

------