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 repositório
CodeArtifact usa permissões baseadas em recursos para controlar o acesso. Com as permissões baseadas em recursos, você pode especificar quem tem acesso a um repositório e quais ações essas pessoas podem realizar nele. Por padrão, somente o proprietário do repositório tem acesso a ele. Você pode aplicar um documento de política que permita que outros IAM diretores acessem seu repositório.
Para obter mais informações, consulte Políticas baseadas em recursos e Políticas baseadas em identidade e Políticas baseadas em recursos.
Crie uma política de recursos para conceder acesso de leitura
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
). Por exemplo, a política de recursos a seguir concede à conta 123456789012
permissão para baixar pacotes do repositório.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:ReadFromRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root" }, "Resource": "*" } ] }
Como a política é avaliada somente para operações no repositório ao qual está anexada, não é necessário especificar um recurso. Como o recurso está implícito, você pode definir Resource
como *
. Para que um gerenciador de pacotes baixe um pacote desse repositório, será necessário também criar uma política de domínio para acesso entre contas. A política de domínio deve conceder pelo menos codeartifact:GetAuthorizationToken
permissão ao diretor. Para obter um exemplo de uma política completa de domínio para conceder acesso entre contas, consulte Exemplo de políticas de domínio.
nota
A ação codeartifact:ReadFromRepository
só pode ser usada em um recurso do repositório. Você não pode colocar o Amazon Resource Name (ARN) de um pacote como um recurso com codeartifact:ReadFromRepository
a ação de permitir acesso de leitura a um subconjunto de pacotes em um repositório. Uma determinada entidade principal pode ler todos os pacotes em um repositório ou nenhum deles.
Como a única ação especificada no repositório é ReadFromRepository
, usuários e funções da conta 1234567890
podem baixar pacotes do repositório. No entanto, eles não podem realizar outras ações neles (por exemplo, listar nomes e versões de pacotes). Normalmente, você concede permissões na política a seguir além de ReadFromRepository
porque um usuário que baixa pacotes de um repositório também precisa interagir com eles de outras maneiras.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:DescribePackageVersion", "codeartifact:DescribeRepository", "codeartifact:GetPackageVersionReadme", "codeartifact:GetRepositoryEndpoint", "codeartifact:ListPackages", "codeartifact:ListPackageVersions", "codeartifact:ListPackageVersionAssets", "codeartifact:ListPackageVersionDependencies", "codeartifact:ReadFromRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root" }, "Resource": "*" } ] }
Definir uma política
Depois de criar um documento de política, use o comando put-repository-permissions-policy
para anexá-lo a um repositório:
aws codeartifact put-repository-permissions-policy --domain
my_domain
--domain-owner111122223333
\ --repositorymy_repo
--policy-documentfile:///PATH/TO/policy.json
Quando você chama put-repository-permissions-policy
, a política de recursos no repositório é ignorada ao avaliar as permissões. Isso garante que o proprietário de um domínio não possa se bloquear do repositório, 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 repositório usando uma política de recursos, pois a política de recursos é ignorada durante a chamada put-repository-permissions-policy.
Exemplo de resultado:
{ "policy": { "resourceArn": "arn:aws:codeartifact:
region-id
:111122223333
:repository/my_domain
/my_repo
", "document": "{ ...policy document content...}
", "revision": "MQlyyTQRASRU3HB58gBtSDHXG7Q3hvxxxxxxx=
" } }
A saída do comando contém o Amazon Resource Name (ARN) do recurso do repositório, o conteúdo completo do documento de política e um identificador de revisão. Você pode passar o identificador de revisão para put-repository-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
Use o comando get-repository-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.
aws codeartifact get-repository-permissions-policy --domain
my_domain
--domain-owner111122223333
\ --repositorymy_repo
--output text --query policy.document | python -m json.tool
Exemplo de resultado:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root" }, "Action": [ "codeartifact:DescribePackageVersion", "codeartifact:DescribeRepository", "codeartifact:GetPackageVersionReadme", "codeartifact:GetRepositoryEndpoint", "codeartifact:ListPackages", "codeartifact:ListPackageVersions", "codeartifact:ListPackageVersionAssets", "codeartifact:ListPackageVersionDependencies", "codeartifact:ReadFromRepository" ], "Resource": "*" } ] }
Excluir uma política
Use o comando delete-repository-permissions-policy
para excluir uma política de um repositório.
aws codeartifact delete-repository-permissions-policy --domain
my_domain
--domain-owner111122223333
\ --repositorymy_repo
O formato da saída é o mesmo que o do comando get-repository-permissions-policy
.
Conceda acesso de leitura às entidades principais
Ao especificar o usuário raiz de uma conta como entidade principal em um documento de política, você concede acesso a todos os usuários e funções dessa conta. Para limitar o acesso a usuários ou funções selecionados, use-os ARN na Principal
seção da política. Por exemplo, use o seguinte para conceder acesso de leitura ao IAM usuário bob
na conta123456789012
.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:ReadFromRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/bob
" }, "Resource": "*" } ] }
Conceder acesso de gravação aos pacotes
A ação codeartifact:PublishPackageVersion
é usada para controlar a permissão para publicar novas versões de um pacote. O recurso usado com essa ação deve ser um pacote. O formato do CodeArtifact pacote ARNs é o seguinte.
arn:aws:codeartifact:
region-id
:111122223333
:package/my_domain
/my_repo
/package-format
/package-namespace
/package-name
O exemplo a seguir mostra o ARN para um pacote npm com escopo @parity
e nome ui
no my_repo
repositório no domínio. my_domain
arn:aws:codeartifact:
region-id
:111122223333
:package/my_domain
/my_repo
/npm
/parity
/ui
O ARN para um pacote npm sem escopo tem a string vazia para o campo de namespace. Por exemplo, o seguinte é ARN para um pacote sem escopo e com nome react
no my_repo
repositório no domíniomy_domain
.
arn:aws:codeartifact:
region-id
:111122223333
:package/my_domain
/my_repo
/npm
//react
A política a seguir concede permissão 123456789012
à conta para publicar versões de @parity/ui
no repositório my_repo
.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:PublishPackageVersion" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root" }, "Resource": "arn:aws:codeartifact:region-id
:111122223333
:package/my_domain
/my_repo
/npm
/parity
/ui
" } ] }
Importante
Para conceder permissão para publicar versões NuGet do Maven e do pacote, adicione as seguintes permissões além decodeartifact:PublishPackageVersion
.
NuGet:
codeartifact:ReadFromRepository
e especifique o recurso do repositórioMaven:
codeartifact:PutPackageMetadata
Como essa política especifica um domínio e um repositório como parte do recurso, ela permite publicar somente quando anexada a esse repositório.
Conceder acesso de gravação a um repositório
Você pode usar curingas para conceder permissão de gravação a todos os pacotes em um repositório. Por exemplo, use a política a seguir para conceder a uma conta permissão para gravar em todos os pacotes no repositório my_repo
.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:PublishPackageVersion" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root" }, "Resource": "arn:aws:codeartifact:region-id
:111122223333
:package/my_domain
/my_repo
/*" } ] }
Interação entre políticas de repositório e domínio
CodeArtifact oferece suporte a políticas de recursos em domínios e repositórios. As políticas de recursos são opcionais. Cada domínio pode ter uma política e cada repositório no domínio pode ter sua própria política de repositório. Se uma política de domínio e uma política de repositório estiverem presentes, ambas serão avaliadas ao determinar se uma solicitação para um CodeArtifact repositório é permitida ou negada. As políticas de domínio e repositório estão sendo avaliadas usando as seguintes regras:
-
Nenhuma política de recursos é avaliada ao realizar operações em nível de conta, como ListDomainsou. ListRepositories
-
Nenhuma política de repositório é avaliada ao realizar operações em nível de domínio, como ou. DescribeDomainListRepositoriesInDomain
-
A política de domínio não é avaliada durante a execução PutDomainPermissionsPolicy. Observe que essa regra evita bloqueios.
-
A política de domínio é avaliada durante a execução PutRepositoryPermissionsPolicy, mas a política do repositório não é avaliada.
-
Uma negação explícita em qualquer política substitui uma permissão em outra política.
-
Uma permissão explícita só é necessária em uma política de recursos. A omissão de uma ação de uma política de repositório não resultará em uma negação implícita se a política de domínio permitir a ação.
-
Quando nenhuma política de recursos permite uma ação, o resultado é uma negação implícita, a menos que a conta do responsável pela chamada seja a conta do proprietário do domínio ou do administrador do repositório e uma política baseada em identidade permita a ação.
As políticas de recursos são opcionais quando usadas para conceder acesso em um cenário de conta única, em que a conta do chamador usada para acessar um repositório é a mesma que a conta do proprietário do domínio e do administrador do repositório. As políticas de recursos são necessárias para conceder acesso em um cenário entre contas em que a conta do chamador não é a mesma do proprietário do domínio ou da conta do administrador do repositório. O acesso entre contas CodeArtifact segue as IAM regras gerais para acesso entre contas, conforme descrito em Determinando se uma solicitação entre contas é permitida no Guia do IAM usuário.
-
Um principal na conta do proprietário do domínio pode ter acesso a qualquer repositório no domínio por meio de uma política baseada em identidade. Observe que, nesse caso, nenhuma permissão explícita é necessária em uma política de domínio ou repositório.
-
Um principal na conta do proprietário do domínio pode ter acesso a qualquer repositório por meio de uma política de domínio ou repositório. Observe que, nesse caso, nenhuma permissão explícita é necessária em uma política baseada em identidade.
-
Um principal na conta de administrador do repositório pode ter acesso ao repositório por meio de uma política baseada em identidade. Observe que, nesse caso, nenhuma permissão explícita é necessária em uma política de domínio ou repositório.
-
Um principal em outra conta só recebe acesso quando permitido por pelo menos uma política de recursos e pelo menos uma política baseada em identidade, sem nenhuma política que negue explicitamente a ação.