Como em todos os produtos do Google Cloud, Identity and Access Management protege o Cloud Deploy controlando quais usuários autenticados e contas de serviço podem executar quais ações.
Neste documento, descrevemos alguns dos recursos do IAM e fornecemos instruções para proteger as entregas de aplicativos gerenciadas usando o Cloud Deploy. Confira algumas maneiras específicas de restringir o acesso a ações e recursos no Cloud Deploy:
Conceder permissões para promover uma versão a um destino específico
Conceder permissões para aprovar lançamentos para um destino específico
Conceder permissões para promover uma versão durante um período específico
Conceder permissões para aprovar lançamentos durante um período específico
Antes de começar
Noções básicas sobre os conceitos básicos do IAM.
Saiba mais sobre os papéis e as permissões do Cloud Deploy.
Sobre os recursos avançados do IAM
Além de papéis e permissões, o Cloud Deploy usa os seguintes recursos do IAM para fornecer esses controles:
Sobre as políticas do IAM
Uma política do IAM é um conjunto de vinculações e metadados. A vinculação de papel concede um único papel a um ou mais principais (usuários, grupos ou contas de serviço), além de qualquer condição específica do contexto que controla se a vinculação recebe.
Para mais informações sobre políticas de IAM, consulte Noções básicas sobre políticas.
Sobre as condições do IAM
Com as condições do IAM, é possível controlar o acesso aos recursos e ações do Cloud Deploy com base nas condições calculadas no momento da execução. Por exemplo, é possível restringir a promoção a uma determinada meta, de modo que ela só seja permitida durante um período especificado.
Sobre os atributos de API
Ao criar condições do IAM, é possível consultar os atributos da API para receber informações sobre o ambiente de execução sobre uma solicitação. Por exemplo, é possível usar um atributo de API para receber o nome do recurso a que a solicitação se refere. Em seguida, compare-o aos recursos a que o principal tem acesso.
Conceda acesso refinado usando recursos avançados do IAM
Esses recursos avançados do IAM permitem controlar o acesso a recursos específicos e a tipos de recursos em condições específicas.
Os procedimentos nesta seção concedem acesso a recursos específicos (destinos,
pipelines de entrega). Também é possível conceder acesso no nível do projeto, o que afeta todos os pipelines de entrega ou todos os destinos nesse projeto. Para definir uma
política do IAM para um projeto, use o comando
gcloud projects set-iam-policy
:
gcloud projects set-iam-policy PROJECT_ID POLICY_FILE
Conceder acesso a um pipeline de entrega específico
É possível conceder permissões a um principal para criar, modificar e excluir todos os pipelines de entrega. Para isso, basta conceder um papel apropriado. Mas, às vezes, convém conceder esse acesso a um ou mais pipelines específicos.
Para fazer isso, use vinculações de papéis para vincular o
papel roles/clouddeploy.developer
a esse principal. Então, quando aplicar a
política (com setIamPolicy
), especifique o pipeline de entrega. o acesso é concedido.
Para conceder acesso a um pipeline de entrega específico:
Crie um arquivo de política com a seguinte vinculação:
bindings: - role: roles/clouddeploy.developer members: - user:fatima@example.com
O exemplo acima concede o papel a um usuário, mas também é possível concedê-lo a um grupo ou uma conta de serviço.
Chame o comando a seguir para aplicar o arquivo de política a um pipeline de entrega específico:
gcloud deploy delivery-pipelines set-iam-policy --delivery-pipeline=PIPELINE_NAME --region=REGION POLICY_FILE
Conceder acesso para configurar um destino específico
Para conceder acesso principal a um destino específico, use
vinculações de papéis. Para fazer isso, vincule o papel roles/clouddeploy.operator
a esse principal e, quando aplicar a política (com setIamPolicy
), especifique em qual destino o acesso é concedido.
O acesso ao destino específico permite que o principal atualize e exclua esse destino.
Crie um arquivo de política com a seguinte vinculação:
bindings: - role: roles/clouddeploy.operator members: - group:cd_operators@example.com
O exemplo acima concede o papel a um grupo, mas também é possível concedê-lo a um usuário ou a uma conta de serviço.
Chame o seguinte comando para aplicar o arquivo de política a um destino específico:
gcloud deploy targets set-iam-policy TARGET --region=REGION POLICY_FILE
Conceder permissões para promover uma versão a um destino específico
Para este procedimento, presumimos que já exista uma política em vigor que vincule o papel ao principal. Aqui, adicionamos uma condição que especifica o destino:
Crie um arquivo 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
Nessa vinculação de papel,
condition
usa um par de chave-valor, em que a chave éexpression
e o valor é uma expressão CEL. Essa expressão referencia um conjunto de atributos contextuais sobre a solicitação e avalia como um booleano.Nesse caso, a expressão é avaliada quando o principal tenta promover a versão, para confirmar que o destino da promoção corresponde ao destino na expressão.
A expressão usa o atributo de API
clouddeploy.googleapis.com/rolloutTarget
, que é o destino que o principal está tentando promover. A expressão o compara com o destino ao qual o principal está recebendo acesso de promoção.Defina a vinculação para um pipeline de entrega específico:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Se você quiser definir essa vinculação para todos os canais de entrega, será possível defini-la no nível do projeto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Conceder permissões para aprovar lançamentos para um destino específico
A vinculação nesta seção concede a um principal permissão para aprovar lançamentos de um pipeline e inclui uma condição que aplica a permissão ao destino prod
.
Crie um arquivo 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
Nessa vinculação de papel,
condition
usa um par de chave-valor, em que a chave éexpression
e o valor é uma expressão CEL. A expressão referencia um conjunto de atributos contextuais sobre a solicitação e avalia como um booleano.Nesse caso, a expressão é avaliada quando o principal tenta aprovar o lançamento, para confirmar que o destino corresponde ao destino na expressão.
A expressão usa o atributo
clouddeploy.googleapis.com/rolloutTarget
da API, que é o destino do lançamento, e o compara com o destino para o qual o principal está recebendo acesso de aprovação. O atributoclouddeploy.googleapis.com/rolloutTarget
é o único atributo de API compatível com o Cloud Deploy.Defina a vinculação para um pipeline de entrega específico:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Se você quiser definir essa vinculação para todos os canais de entrega, será possível defini-la no nível do projeto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Conceder permissões para promover uma versão durante um período específico
A vinculação nesta seção concede a permissão principal para promover versões de um pipeline e inclui uma condição que especifica a janela de tempo em que a vinculação entra em vigor.
Crie um arquivo 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
Nessa vinculação de papel,
condition
usa um par de chave-valor, em que a chave éexpression
e o valor é uma expressão CEL. A expressão referencia um conjunto de atributos contextuais sobre a solicitação e avalia como um booleano. Essa expressão verifica se o horário da solicitação ocorre de segunda a sexta-feira.Nesse caso, a expressão é avaliada quando o principal tenta promover a versão, para confirmar que o destino da promoção corresponde ao destino na expressão.
Defina a vinculação para um pipeline de entrega específico:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Se você quiser definir essa vinculação para todos os canais de entrega, será possível defini-la no nível do projeto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Conceder permissões para aprovar lançamentos durante um período específico
A vinculação nesta seção concede a um principal permissão para aprovar lançamentos e inclui uma condição que especifica o período em que a vinculação está em vigor.
Crie um arquivo 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
Nessa vinculação de papel,
condition
usa um par de chave-valor, em que a chave éexpression
e o valor é uma expressão CEL que referencia um conjunto de atributos sobre a solicitação e avalia como um booleano. Essa expressão verifica se o horário da solicitação ocorre de segunda a sexta-feira.Nesse caso, a expressão é avaliada quando o principal tenta aprovar o lançamento, para confirmar que o destino do lançamento corresponde ao destino na expressão.
Defina a vinculação para um pipeline de entrega específico:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Se você quiser definir essa vinculação para todos os canais de entrega, será possível defini-la no nível do projeto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Conceder permissões para tentar novamente um job com base no tipo
A vinculação nesta seção concede a um principal permissão para tentar novamente um job do Cloud Deploy com base no tipo de job.
Crie um arquivo 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
Nessa vinculação de papel,
condition
usa um par de chave-valor, em que a chave éexpression
e o valor é uma expressão CEL. A expressão referencia um conjunto de atributos contextuais sobre a solicitação e avalia como um booleano.Nesse caso, a expressão é avaliada quando o principal tenta repetir o job, para confirmar se os tipos de job correspondem ao tipo na expressão.
A expressão usa o atributo de API
clouddeploy.googleapis.com/jobType
, que pode serdeploy
ouverify
.Defina a vinculação para um pipeline de entrega específico:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Se você quiser definir essa vinculação para todos os canais de entrega, será possível defini-la no nível do projeto:
gcloud projects set-iam-policy PROJECT POLICY_FILE