Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Políticas de repositorios
CodeArtifact utiliza permisos basados en recursos para controlar el acceso. Los permisos basados en recursos le permiten especificar quién tiene acceso a un repositorio y qué acciones puede realizar en él. De forma predeterminada, solo el propietario del repositorio tiene acceso a él. Puede aplicar un documento de política que permita a otros IAM directores acceder a su repositorio.
Para obtener más información, consulte Políticas basadas en recursos y Políticas basadas en identidades y Políticas basadas en recursos.
Cree una política de recursos para conceder el acceso de lectura
Una política de recursos es un archivo de texto en JSON formato. El archivo debe especificar una entidad principal (actor), una o más acciones y un efecto (Allow
o Deny
). Por ejemplo, la siguiente política de recursos concede a la cuenta permiso 123456789012
para descargar paquetes del repositorio.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:ReadFromRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root" }, "Resource": "*" } ] }
Como la política solo se evalúa para las operaciones realizadas en el repositorio al que está adjunta, no es necesario que especifique un recurso. Como el recurso está implícito, puede establecer el valor Resource
en *
. Para que un administrador de paquetes pueda descargar un paquete de este repositorio, también tendrá que crear una política de dominio para el acceso entre cuentas. La política de dominio debe conceder al menos un codeartifact:GetAuthorizationToken
permiso al director. Para ver un ejemplo de una política de dominio completa para otorgar acceso entre cuentas, consulte Ejemplo de políticas de dominio.
nota
La acción codeartifact:ReadFromRepository
solo se puede usar en un recurso del repositorio. No puedes poner el nombre de recurso de Amazon (ARN) de un paquete como recurso con codeartifact:ReadFromRepository
una acción para permitir el acceso de lectura a un subconjunto de paquetes de un repositorio. Una entidad principal determinada puede leer todos los paquetes de un repositorio o ninguno de ellos.
Como la única acción especificada en el repositorio es ReadFromRepository
, los usuarios y los roles de la cuenta 1234567890
puedan descargar paquetes del repositorio. Sin embargo, no pueden realizar otras acciones en ellos (por ejemplo, enumerar los nombres y las versiones de los paquetes). Por lo general, se conceden permisos en la siguiente política, además de ReadFromRepository
porque un usuario que descarga paquetes de un repositorio también necesita interactuar con él de otras formas.
{ "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": "*" } ] }
Configuración de una política
Después de haber creado un documento de políticas, utilice el comando put-repository-permissions-policy
para adjuntarlo a un repositorio:
aws codeartifact put-repository-permissions-policy --domain
my_domain
--domain-owner111122223333
\ --repositorymy_repo
--policy-documentfile:///PATH/TO/policy.json
Al llamar a put-repository-permissions-policy
, se ignora la política de recursos del repositorio al evaluar los permisos. Esto garantiza que el propietario de un dominio no pueda excluirse del repositorio, lo que le impediría actualizar la política de recursos.
nota
No puedes conceder permisos a otra AWS cuenta para actualizar la política de recursos de un repositorio mediante una política de recursos, ya que la política de recursos se ignora cuando se llama put-repository-permissions-policy.
Resultado de ejemplo:
{ "policy": { "resourceArn": "arn:aws:codeartifact:
region-id
:111122223333
:repository/my_domain
/my_repo
", "document": "{ ...policy document content...}
", "revision": "MQlyyTQRASRU3HB58gBtSDHXG7Q3hvxxxxxxx=
" } }
El resultado del comando contiene el nombre del recurso de Amazon (ARN) del recurso del repositorio, todo el contenido del documento de política y un identificador de revisión. Puede pasar el identificador de revisión a put-repository-permissions-policy
usando la opción --policy-revision
. Esto garantiza que se sobrescriba una revisión conocida del documento y no una versión más reciente configurada por otro escritor.
Leer una política
Utilice el comando get-repository-permissions-policy
para leer una versión existente de un documento de política. Para formatear la salida para que sea legible, utilice --output
y --query policy.document
junto con el módulo json.tool
de Python.
aws codeartifact get-repository-permissions-policy --domain
my_domain
--domain-owner111122223333
\ --repositorymy_repo
--output text --query policy.document | python -m json.tool
Resultado de ejemplo:
{ "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": "*" } ] }
Eliminar una política
Utilice el comando delete-repository-permissions-policy
para eliminar una política de un repositorio.
aws codeartifact delete-repository-permissions-policy --domain
my_domain
--domain-owner111122223333
\ --repositorymy_repo
El formato de la salida es el mismo que el del comando get-repository-permissions-policy
.
Otorgar acceso de lectura a las entidades principales
Al especificar el usuario raíz de una cuenta como entidad principal en un documento de política, se concede acceso a todos los usuarios y roles de esa cuenta. Para limitar el acceso a los usuarios o roles seleccionados, ARN utilícelos en la Principal
sección de la política. Por ejemplo, usa lo siguiente para conceder acceso de lectura al IAM usuario de bob
la cuenta123456789012
.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:ReadFromRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/bob
" }, "Resource": "*" } ] }
Otorgar acceso de escritura a los paquetes
La acción codeartifact:PublishPackageVersion
se utiliza para controlar el permiso para publicar nuevas versiones de un paquete. El recurso utilizado en esta acción debe ser un paquete. El formato del CodeArtifact paquete ARNs es el siguiente.
arn:aws:codeartifact:
region-id
:111122223333
:package/my_domain
/my_repo
/package-format
/package-namespace
/package-name
El siguiente ejemplo muestra el ARN de un paquete npm con alcance @parity
y nombre ui
en el my_repo
repositorio del dominiomy_domain
.
arn:aws:codeartifact:
region-id
:111122223333
:package/my_domain
/my_repo
/npm
/parity
/ui
El campo ARN para un paquete npm sin ámbito tiene la cadena vacía para el campo de espacio de nombres. Por ejemplo, lo siguiente es el caso ARN de un paquete sin ámbito y con un nombre react
en el my_repo
repositorio del dominio. my_domain
arn:aws:codeartifact:
region-id
:111122223333
:package/my_domain
/my_repo
/npm
//react
La siguiente política otorga permiso 123456789012
a la cuenta para publicar versiones de @parity/ui
en el repositorio 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 permiso para publicar versiones de NuGet paquetes y de Maven, añada los siguientes permisos además decodeartifact:PublishPackageVersion
.
NuGet:
codeartifact:ReadFromRepository
y especifique el recurso del repositorioMaven:
codeartifact:PutPackageMetadata
Como esta política especifica un dominio y un repositorio como parte del recurso, solo permite publicar cuando están adjuntos a ese repositorio.
Otorgar acceso de escritura a un repositorio
Puede usar caracteres comodín para conceder permisos de escritura a todos los paquetes de un repositorio. Por ejemplo, use la siguiente política para conceder permiso a una cuenta para escribir en todos los paquetes del repositorio 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
/*" } ] }
Interacción entre las políticas de repositorio y dominio
CodeArtifact admite las políticas de recursos en dominios y repositorios. Las políticas de recursos son opcionales. Cada dominio puede tener una política y cada repositorio del dominio puede tener su propia política de repositorio. Si hay una política de dominio y una política de repositorio, ambas se evalúan al determinar si se permite o deniega una solicitud a un CodeArtifact repositorio. Las políticas de dominio y repositorio se evalúan mediante las siguientes reglas:
-
No se evalúa ninguna política de recursos al realizar operaciones a nivel de cuenta, como ListDomainso. ListRepositories
-
No se evalúa ninguna política de repositorio al realizar operaciones a nivel de dominio, como o. DescribeDomainListRepositoriesInDomain
-
La política de dominio no se evalúa cuando se ejecuta. PutDomainPermissionsPolicy Tenga en cuenta que esta regla impide los bloqueos.
-
La política de dominio se evalúa cuando se ejecuta PutRepositoryPermissionsPolicy, pero la política de repositorio no se evalúa.
-
Una denegación explícita en cualquier política anula un permiso en otra política.
-
Solo se requiere un permiso explícito en una política de recursos. Omitir una acción de una política de repositorio no implicará una denegación implícita si la política de dominio permite la acción.
-
Cuando ninguna política de recursos permite una acción, el resultado es una denegación implícita, a menos que la cuenta del autor de la llamada sea la cuenta del propietario del dominio o del administrador del repositorio y una política basada en la identidad permita la acción.
Las políticas de recursos son opcionales cuando se utilizan para conceder el acceso en un escenario de una sola cuenta, en el que la cuenta de la persona que llama utilizada para acceder a un repositorio es la misma que la del propietario del dominio y la del administrador del repositorio. Se requieren políticas de recursos para conceder el acceso en un escenario multicuenta en el que la cuenta de la persona que llama no es la misma que la del propietario del dominio o la del administrador del repositorio. El acceso entre cuentas CodeArtifact sigue las IAM reglas generales para el acceso entre cuentas, tal como se describe en Determinar si se permite una solicitud multicuenta en la Guía del usuario. IAM
-
Al titular de la cuenta del propietario del dominio se le puede conceder acceso a cualquier repositorio del dominio mediante una política basada en la identidad. Ten en cuenta que, en este caso, no se requiere ningún permiso explícito en una política de dominio o repositorio.
-
Al titular de la cuenta del propietario del dominio se le puede conceder acceso a cualquier repositorio mediante una política de dominio o repositorio. Tenga en cuenta que, en este caso, una política basada en la identidad no requiere un permiso explícito.
-
A un titular de la cuenta de administrador del repositorio se le puede conceder acceso al repositorio mediante una política basada en la identidad. Tenga en cuenta que, en este caso, no se requiere ningún permiso explícito en una política de dominio o repositorio.
-
A un titular de otra cuenta solo se le concede acceso cuando lo permiten al menos una política de recursos y al menos una política basada en la identidad, sin que ninguna política niegue explícitamente la acción.