Este documento descreve um script que permite que cada projeto em uma organização ou pasta processe eventos de integridade do serviço. Ele concede ao principal do Identity and Access Management (IAM) especificado o papel de leitor de integridade do serviço, que permite visualizar eventos e ativar a API Service Health.
Antes de começar
Você precisa ter as seguintes permissões:
- Permissão para listar projetos no pai:
resourcemanager.projects.list
. - Permissão para adicionar o IAM
(papel de visualizador de integridade do serviço) para o principal do IAM
especificado:
resourcemanager.projects.setIamPolicy
. - Permissão para ativar os serviços do Google Cloud :
serviceusage.services.enable.
Para verificar os papéis que podem ser usados para executar o script:
- Acesse a seção Papéis predefinidos da página de referência dos papéis básicos e predefinidos do IAM.
- Pesquise a permissão desejada. Os papéis que têm a permissão são exibidos.
Executar o script
O script aceita os seguintes parâmetros:
PARENT_ID
: o ID do projeto pai. O ID pode ser de uma organização ou de uma pasta. Todos os projetos do pai terão a integridade de serviço personalizada ativada.(opcional)
IAM_PRINCIPAL
: um identificador do principal ou membro que vai receber a função de leitor de integridade do serviço. Ele geralmente tem o seguinte formato:PRINCIPAL_TYPE:ID
. Exemplo:user:my-user@example.com
.Para conferir a lista completa de valores aceitos, consulte a seção Conceder um único papel da página "Gerenciar o acesso a projetos, pastas e organizações".
Para executar o script, siga as etapas a seguir:
- Decida o API VERSION:
v1
ouv1beta
. Cole o seguinte script em um arquivo:
#!/bin/bash PARENT_ID="$1" PRINCIPAL="$2" FAILED_PROJECTS=() for project in $(gcloud projects list --filter="parent.id: ${PARENT_ID}" --format="value(projectId)") do echo "Enabling PSH API for project $project" gcloud services enable servicehealth.googleapis.com --project="${project}" echo "Finished enabling PSH API for project $project" if [[ -n "$PRINCIPAL" ]]; then echo "Adding $PRINCIPAL as service health viewer to project $project" gcloud projects add-iam-policy-binding "${project}" --member "${PRINCIPAL}" --role roles/servicehealth.viewer echo "Finished adding $PRINCIPAL as service health viewer to project $project" sleep 5 else echo "PRINCIPAL not provided, will not grant service health viewer role. Please provide a PRINCIPAL value in order to view events." fi echo "Attempt to list events from Personalized Service Health for project $project" RESPONSE="$(curl -w "%{http_code}" -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://servicehealth.googleapis.com/API VERSION/projects/"${project}"/locations/global/events)" HTTP_CODE=$(tail -n1 <<< "$RESPONSE") if [[ "$HTTP_CODE" -ne 200 ]] ; then echo "Failed to list events for project $project" echo "Response: $RESPONSE" FAILED_PROJECTS+=($project) else echo "Successfully listed events for project $project" fi done if [[ "${#FAILED_PROJECTS[@]}" -ne 0 ]]; then echo "Listing projects that failed to activate" for project in "${FAILED_PROJECTS[@]}" do echo "$project" done fi
Execute o script. Os exemplos a seguir presumem que o script esteja em um arquivo chamado
activateProjects.sh
:Para ativar todos os projetos no ID da organização
1111111111
e conceder ao usuáriouser:test-user@gmail.com
o papel deroles/servicehealth.viewer
, execute:bash activateProjects.sh 1111111111 "user:test-user@gmail.com"
Para ativar todos os projetos no ID da organização
1111111111
e conceder à conta de serviçoserviceAccount:test-proj1@example.domain.com
o papel deroles/servicehealth.viewer
, execute:bash activateProjects.sh 1111111111 "serviceAccount:test-proj1@example.domain.com"
O recurso vai levar até 24 horas para começar a processar eventos de integridade do serviço.