Exemplos de políticas de repositório privado no Amazon ECR
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.
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 ter mais informações, consulte Políticas de repositório versus políticas do IAM.
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.
Exemplo: permitir um ou mais usuários do
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.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPushPull", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
account-id
:user/push-pull-user-1
", "arn:aws:iam::account-id
:user/push-pull-user-2
" ] }, "Action": [ "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability", "ecr:CompleteLayerUpload", "ecr:GetDownloadUrlForLayer", "ecr:InitiateLayerUpload", "ecr:PutImage", "ecr:UploadLayerPart" ] } ] }
Exemplo: permitir outra conta
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.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountPush", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
account-id
:root" }, "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:CompleteLayerUpload", "ecr:InitiateLayerUpload", "ecr:PutImage", "ecr:UploadLayerPart" ] } ] }
A política de repositório a seguir permite que alguns usuários extraiam imagens (pull-user-1
e pull-user-2
) e forneçam acesso total a outro (admin-user
).
nota
Para políticas de repositório mais complicadas, que não são compatíveis com o AWS Management Console no momento, você pode aplicar a política com o comando set-repository-policy da AWS CLI.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPull", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
account-id
:user/pull-user-1
", "arn:aws:iam::account-id
:user/pull-user-2
" ] }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] }, { "Sid": "AllowAll", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id
:user/admin-user
" }, "Action": [ "ecr:*" ] } ] }
Exemplo: negar tudo
A política de repositório a seguir nega a todos os usuários a capacidade de extrair imagens.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyPull", "Effect": "Deny", "Principal": "*", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] } ] }
Exemplo: restringir o acesso a endereços IP específicos
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 instrução identifica o intervalo 54.240.143.*
de endereços IP do Internet Protocol versão 4 (IPv4).
O bloco Condition
usa as condições NotIpAddress
e a chave de condição aws:SourceIp
, que é uma chave de condição que abrange toda a AWS. Para obter mais informações sobre chaves de condição, consulte Chaves de contexto de condição globais da AWS. Os valores IPv4 aws:sourceIp
usam a notação CIDR padrão. Para obter mais informações, consulte Operadores de condição de endereço IP no Guia do usuário do IAM.
{ "Version": "2012-10-17", "Id": "
ECRPolicyId1
", "Statement": [ { "Sid": "IPAllow
", "Effect": "Deny", "Principal": "*", "Action": "ecr:*", "Condition": { "NotIpAddress": { "aws:SourceIp": "54.240.143.0/24
" } } } ] }
Exemplo: permitir um serviço da AWS
A política de repositório a seguir permite que o AWS CodeBuild acesse as ações da API do Amazon ECR necessárias para 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 Exemplo de Amazon ECR para CodeBuild no Manual do usuário do AWS CodeBuild.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"CodeBuildAccess", "Effect":"Allow", "Principal":{ "Service":"codebuild.amazonaws.com" }, "Action":[ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Condition":{ "ArnLike":{ "aws:SourceArn":"arn:aws:codebuild:
region
:123456789012
:project/project-name
" }, "StringEquals":{ "aws:SourceAccount":"123456789012
" } } } ] }