Esta página descreve como restringir as transferências de artefactos dos seus repositórios do Artifact Registry através da criação e gestão de regras de transferência.
As regras de transferência permitem-lhe autorizar ou recusar transferências de artefactos dos seus repositórios e pacotes. Também pode definir condições para que a regra se aplique a etiquetas ou versões específicas.
Para ver detalhes sobre como funcionam as regras de transferências, consulte a secção Restrinja as transferências de artefactos da vista geral de controle o acesso e proteja os artefactos.
Antes de começar
- Se ainda não tiver um, crie um repositório padrão no formato Docker.
- (Opcional) Configure as predefinições para os comandos da CLI gcloud.
Funções necessárias
Para receber as autorizações de que precisa para criar e gerir regras de transferência, peça ao seu administrador que lhe conceda as seguintes funções de IAM no repositório:
-
Criar, atualizar, obter, listar e eliminar regras:
Administrador do repositório do Artifact Registry (
roles/artifactregistry.repoAdmin
) -
Obter e listar regras:
Leitor do Artifact Registry (
roles/artifactregistry.reader
)
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Crie regras de transferência
gcloud
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
RULE_NAME
: o nome da regra. O nome tem de ser único no seu repositório, ter um comprimento máximo de 256 carateres e ser composto por carateres alfanuméricos, carateres com codificação em percentagem ou carateres na lista [-
,.
,_
,~
,:
,@
,+
,^
].ACTION
: a ação aplicada a uma transferência que corresponda a esta regra. Escolha entreALLOW
, em que a regra permite que ocorram transferências correspondentes, eDENY
, em que a regra impede que ocorram transferências correspondentes.PACKAGE
: (opcional) o nome do pacote. Se for fornecida, a regra aplica-se apenas ao pacote especificado em vez de a todo o repositório.CONDITION
: (opcional) uma expressão CEL que define uma regra correspondente. Se fornecido, aplica a regra apenas a transferências que correspondam à condição especificada. Por exemplo,pkg.version.id < '3.0'
.PROJECT
: o seu Google Cloud ID do projeto. Se o ID do projeto contiver dois pontos (:
), consulte o artigo Projetos com âmbito de domínio.LOCATION
: a localização regional ou multirregional do repositório.REPOSITORY
: o ID do repositório.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud artifacts rules create RULE_NAME \ --action=ACTION \ --project=PROJECT \ --location=LOCATION \ --repository=REPOSITORY \ --package=PACKAGE \ --condition="CONDITION"
Windows (PowerShell)
gcloud artifacts rules create RULE_NAME ` --action=ACTION ` --project=PROJECT ` --location=LOCATION ` --repository=REPOSITORY ` --package=PACKAGE ` --condition="CONDITION"
Windows (cmd.exe)
gcloud artifacts rules create RULE_NAME ^ --action=ACTION ^ --project=PROJECT ^ --location=LOCATION ^ --repository=REPOSITORY ^ --package=PACKAGE ^ --condition="CONDITION"
Created rule [RULE_NAME].
gcloud artifacts rules create
.
API
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
RULE_NAME
: o nome da regra. O nome tem de ser único no seu repositório, ter um comprimento máximo de 256 carateres e ser composto por carateres alfanuméricos, carateres com codificação em percentagem ou carateres na lista [-
,.
,_
,~
,:
,@
,+
,^
].ACTION
: a ação aplicada a uma transferência que corresponda a esta regra. Escolha entreALLOW
, em que a regra permite que ocorram transferências correspondentes, eDENY
, em que a regra impede que ocorram transferências correspondentes.PACKAGE
: (opcional) o nome do pacote. Se for fornecida, a regra aplica-se apenas ao pacote especificado em vez de a todo o repositório.CONDITION
: (opcional) uma expressão CEL que define uma regra correspondente. Se fornecido, aplica a regra apenas a transferências que correspondam à condição especificada. Por exemplo,pkg.version.id < '3.0'
.PROJECT
: o seu Google Cloud ID do projeto. Se o ID do projeto contiver dois pontos (:
), consulte o artigo Projetos com âmbito de domínio.LOCATION
: a localização regional ou multirregional do repositório.REPOSITORY
: o ID do repositório.
Método HTTP e URL:
POST https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules?ruleID=RULE_NAME
Corpo JSON do pedido:
{ "action":"ACTION", "packageId":"PACKAGE", "condition": { "expression":"CONDITION" } }
Para enviar o seu pedido, expanda uma destas opções:
É criada uma nova regra com o seguinte resultado:{ "name": "projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules/RULE_NAME", "action": ACTION, "operation": "DOWNLOAD" }
Indique regras de transferência
gcloud
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
PROJECT
: o seu Google Cloud ID do projeto. Se o ID do projeto contiver dois pontos (:
), consulte o artigo Projetos com âmbito de domínio.LOCATION
: a localização regional ou multirregional do repositório.REPOSITORY
: o nome do repositório.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud artifacts rules list \ --project=PROJECT \ --location=LOCATION \ --repository=REPOSITORY
Windows (PowerShell)
gcloud artifacts rules list ` --project=PROJECT ` --location=LOCATION ` --repository=REPOSITORY
Windows (cmd.exe)
gcloud artifacts rules list ^ --project=PROJECT ^ --location=LOCATION ^ --repository=REPOSITORY
RULE: my-rule PACKAGE: example.com/foo ACTION: DENY OPERATION: DOWNLOAD CONDITION: pkg.version.id < '3.0'
gcloud artifacts rules list
.
API
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT
: o seu Google Cloud ID do projeto. Se o ID do projeto contiver dois pontos (:
), consulte o artigo Projetos com âmbito de domínio.LOCATION
: a localização regional ou multirregional do repositório.REPOSITORY
: o nome do repositório.
Método HTTP e URL:
GET https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules
Para enviar o seu pedido, expanda uma destas opções:
É apresentada uma lista de regras para o projeto, a localização e o repositório especificados, semelhante à seguinte:{ "rules": [ { "name": "projects/my-project/locations/us-central1/repositories/my-repo/rules/my-rule", "action": "DENY", "operation": "DOWNLOAD", "condition": { "expression": "pkg.version.id \u003c '3.0'" }, "packageId": "example.com/foo" } ] }
Descreva as regras de transferência
gcloud
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
RULE_NAME
: o nome da regra. O nome tem de ser exclusivo no seu repositório.PROJECT
: o seu Google Cloud ID do projeto. Se o ID do projeto contiver dois pontos (:
), consulte o artigo Projetos com âmbito de domínio.LOCATION
: a localização regional ou multirregional do repositório.REPOSITORY
: o nome do repositório.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud artifacts rules describe RULE_NAME \ --project=PROJECT \ --location=LOCATION \ --repository=REPOSITORY
Windows (PowerShell)
gcloud artifacts rules describe RULE_NAME ` --project=PROJECT ` --location=LOCATION ` --repository=REPOSITORY
Windows (cmd.exe)
gcloud artifacts rules describe RULE_NAME ^ --project=PROJECT ^ --location=LOCATION ^ --repository=REPOSITORY
RULE: my-rule PACKAGE: example.com/foo ACTION: DENY OPERATION: DOWNLOAD CONDITION: pkg.version.id < '3.0'
gcloud artifacts rules describe
.
API
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
RULE_NAME
: o nome da regra. O nome tem de ser exclusivo no seu repositório.PROJECT
: o seu Google Cloud ID do projeto. Se o ID do projeto contiver dois pontos (:
), consulte o artigo Projetos com âmbito de domínio.LOCATION
: a localização regional ou multirregional do repositório.REPOSITORY
: o nome do repositório.
Método HTTP e URL:
GET https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules/RULE_NAME
Para enviar o seu pedido, expanda uma destas opções:
Os detalhes das regras são apresentados de forma semelhante ao seguinte:{ "rules": [ { "name": "projects/my-project/locations/us-central1/repositories/my-repo/rules/my-rule", "action": "DENY", "operation": "DOWNLOAD", "condition": { "expression": "pkg.version.id \u003c '3.0'" }, "packageId": "example.com/foo" } ] }
Atualize as regras de transferência
gcloud
Remova as variáveis que não quer atualizar.
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
RULE_NAME
: o nome da regra. O nome tem de ser exclusivo no seu repositório.ACTION
: a ação aplicada a uma transferência que corresponda a esta regra. Escolha entreALLOW
eDENY
.PACKAGE
: o nome do pacote. Se não for fornecido, a regra aplica-se a todo o repositório.CONDITION
: a expressão de IEC que define uma regra de correspondência. Se fornecido, aplica a regra apenas a transferências que correspondam à condição especificada. Por exemplo,pkg.version.id < '3.0'
.PROJECT
: o seu Google Cloud ID do projeto. Se o ID do projeto contiver dois pontos (:
), consulte o artigo Projetos com âmbito de domínio.LOCATION
: a localização regional ou multirregional do repositório.REPOSITORY
: o nome do repositório.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud artifacts rules update RULE_NAME \ --action=ACTION \ --project=PROJECT \ --location=LOCATION \ --repository=REPOSITORY \ --package=PACKAGE \ --condition="CONDITION"
Windows (PowerShell)
gcloud artifacts rules update RULE_NAME ` --action=ACTION ` --project=PROJECT ` --location=LOCATION ` --repository=REPOSITORY ` --package=PACKAGE ` --condition="CONDITION"
Windows (cmd.exe)
gcloud artifacts rules update RULE_NAME ^ --action=ACTION ^ --project=PROJECT ^ --location=LOCATION ^ --repository=REPOSITORY ^ --package=PACKAGE ^ --condition="CONDITION"
Updated rule [RULE_NAME]. action: ACTION condition: expression: CONDITION name: projects/PROJECT/locationsLOCATION/repositories/REPOSITORY/rules/RULE_NAME operation: DOWNLOAD
gcloud artifacts rules update
.
API
Remova as variáveis que não quer atualizar.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
RULE_NAME
: o nome da regra. O nome tem de ser exclusivo no seu repositório.ACTION
: a ação aplicada a uma transferência que corresponda a esta regra. Escolha entreALLOW
eDENY
.PACKAGE
: o nome do pacote. Se não for fornecido, a regra aplica-se a todo o repositório.CONDITION
: a expressão de IEC que define uma regra de correspondência. Se fornecido, aplica a regra apenas a transferências que correspondam à condição especificada. Por exemplo,pkg.version.id < '3.0'
.PROJECT
: o seu Google Cloud ID do projeto. Se o ID do projeto contiver dois pontos (:
), consulte o artigo Projetos com âmbito de domínio.LOCATION
: a localização regional ou multirregional do repositório.REPOSITORY
: o nome do repositório.
Método HTTP e URL:
PATCH https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules/RULE_NAME
Corpo JSON do pedido:
{ "action":"ACTION", "packageId":"PACKAGE", "condition": { "expression":"CONDITION" } }
Para enviar o seu pedido, expanda uma destas opções:
Os detalhes da regra atualizados são apresentados de forma semelhante ao seguinte:{ "name": "projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules/RULE_NAME", "action": ACTION, "operation": "DOWNLOAD" }
Elimine regras de transferência
gcloud
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
RULE_NAME
: o nome da regra. O nome tem de ser exclusivo no seu repositório.PROJECT
: o seu Google Cloud ID do projeto. Se o ID do projeto contiver dois pontos (:
), consulte o artigo Projetos com âmbito de domínio.LOCATION
: a localização regional ou multirregional do repositório.REPOSITORY
: o nome do repositório.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud artifacts rules delete RULE_NAME \ --project=PROJECT \ --location=LOCATION \ --repository=REPOSITORY
Windows (PowerShell)
gcloud artifacts rules delete RULE_NAME ` --project=PROJECT ` --location=LOCATION ` --repository=REPOSITORY
Windows (cmd.exe)
gcloud artifacts rules delete RULE_NAME ^ --project=PROJECT ^ --location=LOCATION ^ --repository=REPOSITORY
You are about to delete rule [RULE_NAME] Do you want to continue (Y/n)? Y Deleted rule [RULE_NAME].
gcloud artifacts rules delete
.
API
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
RULE_NAME
: o nome da regra. O nome tem de ser exclusivo no seu repositório.PROJECT
: o seu Google Cloud ID do projeto. Se o ID do projeto contiver dois pontos (:
), consulte o artigo Projetos com âmbito de domínio.LOCATION
: a localização regional ou multirregional do repositório.REPOSITORY
: o nome do repositório.
Método HTTP e URL:
DELETE https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules/RULE_NAME
Para enviar o seu pedido, expanda uma destas opções:
Para mais informações, consulte a referência REST.Use o IEC para definir condições
Pode definir condições para as suas regras de transferência com o Idioma de expressão comum (IEC), que é um idioma de código aberto para a avaliação de expressões. O Artifact Registry fornece o objeto pkg
que
contém os seguintes atributos:
pkg.id
: uma string que representa o nome do pacote do artefacto. Pode ser usado com regras definidas ao nível do repositório.pkg.version.id
: uma string que representa a versão do artefacto.pkg.version.tag
: uma string que representa a etiqueta do artefacto. Use apenas num repositório do Docker.
Pode usar operadores lógicos e funções integradas com a IEC. Seguem-se alguns exemplos de expressões de IEC que podem ser úteis nas suas regras de transferência:
Útil para regras definidas ao nível do repositório:
pkg.id == 'myPackage' #Artifact package matches 'myPackage' pkg.id.startsWith('my') #Artifact package must start with 'my'
Útil para regras definidas em pacotes:
pkg.version.id != '1.0.0' #Artifact version is not '1.0.0' pkg.version.id > '1.0.1' || pkg.version.id < '0.0.1' #Artifact version is greater than '1.0.1' or less than '0.0.1' pkg.version.id.startsWith('1.0.') #Artifact version must start with '1.0.' pkg.version.id in ['1.0.0', '1.2.0'] #Artifact version must be a member of the list ['1.0.0', '1.2.0'] pkg.version.tag == 'tag1' #Artifact tag must be 'tag1' pkg.version.tag.startsWith('tag') #Artifact tag must start with 'tag' pkg.version.tag in ['tag1', 'tag2'] #Artifact tag must be a member of the list ['tag1', 'tag2']
Quando adicionar regras com condições baseadas em etiquetas, como pkg.version.tag == 'latest'
nos seus repositórios do Docker, tenha em atenção o seguinte:
- Quando extrai por resumo, o cliente não fornece uma etiqueta. As condições que usam etiquetas são comparadas com uma etiqueta vazia e podem resultar num comportamento inesperado.
- Para imagens de contentores multi-arquitetura, as condições que usam etiquetas podem não funcionar como esperado e devem ser evitadas.