Tal como acontece com todos os Google Cloud produtos, a gestão de identidades e acessos protege o Cloud Deploy controlando que utilizadores autenticados e contas de serviço podem realizar que ações.
Este documento descreve algumas das funcionalidades da IAM e fornece instruções para proteger as entregas de aplicações que são geridas através do Cloud Deploy. Seguem-se algumas das formas específicas como pode restringir o acesso a ações e recursos no Cloud Deploy:
Conceda autorizações para promover um lançamento para um destino específico
Conceda autorizações para aprovar implementações para um alvo específico
Conceda autorizações para promover um lançamento durante um período específico
Conceda autorizações para aprovar implementações durante um período específico
Antes de começar
Compreenda os conceitos básicos da IAM.
Saiba mais sobre as funções e as autorizações do Cloud Deploy.
Acerca das funcionalidades avançadas da IAM
Além das funções e autorizações, o Cloud Deploy usa as seguintes funcionalidades do IAM para fornecer esses controlos:
Acerca das políticas de IAM
Uma política de IAM é um conjunto de associações e metadados. A associação de funções concede uma única função a um ou mais responsáveis (utilizadores, grupos ou contas de serviço), além de quaisquer condições específicas do contexto que controlam se a associação entra em vigor.
Para mais informações acerca das políticas de IAM, consulte o artigo Compreender as políticas.
Acerca das condições do IAM
Com as condições da IAM, pode controlar o acesso aos recursos e às ações do Cloud Deploy com base nas condições calculadas no tempo de execução. Por exemplo, pode restringir a promoção a um determinado alvo, de modo que só seja permitida durante um período especificado.
Acerca dos atributos da API
Quando cria condições da IAM, pode fazer referência aos atributos da API para obter informações de tempo de execução acerca de um pedido. Por exemplo, pode usar um atributo da API para obter o nome do recurso para o qual o pedido se destina. Em seguida, pode compará-lo com o recurso ou os recursos aos quais o principal tem acesso.
Conceda acesso detalhado através de funcionalidades avançadas da IAM
Estas funcionalidades avançadas da IAM permitem-lhe controlar o acesso a recursos específicos e a tipos de recursos em condições específicas.
Os procedimentos nesta secção concedem acesso a recursos específicos (alvos,
canais de distribuição). Também pode conceder acesso ao nível do projeto, o que
afeta todos os pipelines de entrega ou todos os alvos nesse projeto. Para definir uma política de IAM para um projeto, use o comando gcloud projects set-iam-policy
:
gcloud projects set-iam-policy PROJECT_ID POLICY_FILE
Conceda acesso a um pipeline de entrega específico
Pode conceder autorizações a um principal para criar, modificar e eliminar todos os pipelines de entrega, concedendo apenas uma função adequada. No entanto, por vezes, pode querer conceder a um principal este acesso a um ou mais pipelines específicos.
Para tal, use associações de funções para associar a função roles/clouddeploy.developer
a esse principal. Em seguida, quando aplicar a política (com setIamPolicy
), especifica para que pipeline de entrega o acesso é concedido.
Para conceder acesso a um pipeline de entrega específico:
Crie um ficheiro de política com a seguinte associação:
bindings: - role: roles/clouddeploy.developer members: - user:fatima@example.com
O exemplo acima concede a função a um utilizador, mas também pode conceder a função a um grupo ou a uma conta de serviço.
Chame o seguinte comando para aplicar o ficheiro de política a um pipeline de envio específico:
gcloud deploy delivery-pipelines set-iam-policy --delivery-pipeline=PIPELINE_NAME --region=REGION POLICY_FILE
Conceda acesso para configurar um alvo específico
Para conceder a um principal acesso a um destino específico, pode usar
associações de funções. Para tal, associe a função roles/clouddeploy.operator
a esse principal. Em seguida, quando aplicar a política (com setIamPolicy
), especifique para que destino o acesso é concedido.
O acesso ao destino específico dá ao principal a capacidade de atualizar e eliminar esse destino.
Crie um ficheiro de política com a seguinte associação:
bindings: - role: roles/clouddeploy.operator members: - group:cd_operators@example.com
O exemplo acima concede a função a um grupo, mas também pode conceder a função a um utilizador ou a uma conta de serviço.
Chame o seguinte comando para aplicar o ficheiro de política a um alvo específico:
gcloud deploy targets set-iam-policy TARGET --region=REGION POLICY_FILE
Conceda autorizações para promover um lançamento para um destino específico
Este procedimento pressupõe que já existe uma política em vigor que associa a função ao principal. Aqui, adicionamos uma condição que especifica o destino:
Crie um ficheiro de política com a seguinte vinculação:
bindings: - role: roles/clouddeploy.operator members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: api.getAttribute("clouddeploy.googleapis.com/rolloutTarget", "") == "prod" title: Deploy to prod
Nesta associação de funções,
condition
recebe um par de chave:valor, em que a chave éexpression
e o valor é uma expressão CEL. Esta expressão faz referência a um conjunto de atributos contextuais sobre o pedido e é avaliada como um valor booleano.Neste caso, a expressão é avaliada quando o principal tenta promover o lançamento para confirmar se o alvo da promoção corresponde ao alvo na expressão.
A expressão usa o atributo da API
clouddeploy.googleapis.com/rolloutTarget
, que é o alvo que o principal está a tentar promover. A expressão compara-o com o alvo ao qual o principal está a receber acesso à promoção.Defina a associação para um pipeline de fornecimento específico:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Se quiser definir esta associação para todos os pipelines de entrega, pode defini-la ao nível do projeto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Conceda autorizações para aprovar implementações para um alvo específico
A associação nesta secção concede a uma autorização principal para aprovar implementações
para um pipeline e inclui uma condição que aplica a autorização para o
alvo prod
.
Crie um ficheiro de política com a seguinte vinculação:
bindings: - role: roles/clouddeploy.approver members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: api.getAttribute("clouddeploy.googleapis.com/rolloutTarget", "") == "prod" title: Deploy to prod
Nesta associação de funções,
condition
recebe um par de chave:valor, em que a chave éexpression
e o valor é uma expressão CEL. A expressão faz referência a um conjunto de atributos contextuais sobre o pedido e é avaliada como um valor booleano.Neste caso, a expressão é avaliada quando o principal tenta aprovar a implementação para confirmar se o destino corresponde ao destino na expressão.
A expressão usa o atributo da API
clouddeploy.googleapis.com/rolloutTarget
, que é o destino da implementação, e compara-o com o destino para o qual o principal está a receber acesso de aprovação. O atributoclouddeploy.googleapis.com/rolloutTarget
é o único atributo de API que o Cloud Deploy suporta.Defina a associação para um pipeline de fornecimento específico:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Se quiser definir esta associação para todos os pipelines de entrega, pode defini-la ao nível do projeto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Conceda autorizações para promover um lançamento durante um período específico
A associação nesta secção concede a uma autorização principal para promover lançamentos para um pipeline e inclui uma condição que especifica o período durante o qual a associação está em vigor.
Crie um ficheiro de política com a seguinte vinculação:
bindings: - role: roles/clouddeploy.operator members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: request.time.getDayOfWeek("America/Los_Angeles") > 0 && request.time.getDayOfWeek("America/Los_Angeles") < 6 title: Promote during safe window
Nesta associação de funções,
condition
recebe um par de chave:valor, em que a chave éexpression
e o valor é uma expressão CEL. A expressão faz referência a um conjunto de atributos contextuais sobre o pedido e é avaliada como um valor booleano. Esta expressão verifica se a hora do pedido ocorre de segunda a sexta-feira.Neste caso, a expressão é avaliada quando o principal tenta promover o lançamento para confirmar que o alvo da promoção corresponde ao alvo na expressão.
Defina a associação para um pipeline de fornecimento específico:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Se quiser definir esta associação para todos os pipelines de entrega, pode defini-la ao nível do projeto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Conceda autorizações para aprovar implementações durante um período específico
A associação nesta secção concede a um principal autorização para aprovar implementações e inclui uma condição que especifica o período durante o qual a associação está em vigor
Crie um ficheiro de política com a seguinte vinculação:
bindings: - role: roles/clouddeploy.approver members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: request.time.getDayOfWeek("America/Los_Angeles") > 0 && request.time.getDayOfWeek("America/Los_Angeles") < 6 title: Approve during safe window
Nesta associação de funções,
condition
recebe um par de chave:valor, em que a chave éexpression
e o valor é uma expressão CEL que faz referência a um conjunto de atributos contextuais sobre o pedido e é avaliada como um valor booleano. Esta expressão verifica se a hora do pedido ocorre de segunda a sexta-feira.Neste caso, a expressão é avaliada quando o principal tenta aprovar a implementação para confirmar que o alvo da implementação corresponde ao alvo na expressão.
Defina a associação para um pipeline de fornecimento específico:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Se quiser definir esta associação para todos os pipelines de entrega, pode defini-la ao nível do projeto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Conceda autorizações para repetir uma tarefa, com base no tipo de tarefa
A associação nesta secção concede a uma autorização principal para repetir uma tarefa do Cloud Deploy, com base no tipo de tarefa
Crie um ficheiro de política com a seguinte vinculação:
bindings: - role: roles/clouddeploy.operator members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: api.getAttribute("clouddeploy.googleapis.com/jobType", "") == "deploy" title: Retry deploy job
Nesta associação de funções,
condition
recebe um par de chave:valor, em que a chave éexpression
e o valor é uma expressão CEL. A expressão faz referência a um conjunto de atributos contextuais sobre o pedido e é avaliada como um valor booleano.Neste caso, a expressão é avaliada quando o principal tenta repetir a tarefa para confirmar se os tipos de tarefas correspondem ao tipo de tarefa na expressão.
A expressão usa o atributo da API
clouddeploy.googleapis.com/jobType
, que pode serdeploy
ouverify
.Defina a associação para um pipeline de fornecimento específico:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Se quiser definir esta associação para todos os pipelines de entrega, pode defini-la ao nível do projeto:
gcloud projects set-iam-policy PROJECT POLICY_FILE