Este documento descreve um script que ativa cada projeto em uma organização ou pasta para o processamento de eventos de integridade do serviço. Ele concede à principal do Identity and Access Management (IAM) especificada o papel de leitor do Service Health, que permite visualizar eventos e ativar a API Service Health.
Antes de começar
Make sure that billing is enabled for your Google Cloud project.
Verifique se você tem as seguintes permissões para executar o script:
- Permissão para listar projetos no pai:
resourcemanager.projects.list
. - Permissão para adicionar o IAM
(papel de visualizador da integridade do serviço) para a principal
do IAM especificada:
resourcemanager.projects.setIamPolicy
. - Permissão para ativar os serviços do Google Cloud :
serviceusage.services.enable
.
Uma maneira de receber essas permissões é pedir a um administrador para conceder a você um papel adequado. Pesquise as permissões na seção Papéis predefinidos da página de referência de papéis básicos e predefinidos do IAM. Os papéis com as permissões vão aparecer.
Executar o script
O script aceita os seguintes parâmetros:
PARENT_ID
: ID do pai dos projetos. O ID pode ser de uma organização ou uma pasta. Todos os projetos no pai terão o Serviço de integridade personalizado ativado.(opcional)
IAM_PRINCIPAL
: um identificador do principal ou membro que receberá o papel de leitor do Service Health. Normalmente, ele 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 na 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 script a seguir 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 pressupõem que o script esteja em um arquivo chamado
activateProjects.sh
:Para ativar todos os projetos no ID da organização
345678901
e conceder ao usuáriouser:test-user@gmail.com
o papel deroles/servicehealth.viewer
, execute:bash activateProjects.sh 345678901 "user:test-user@gmail.com"
Para ativar todos os projetos no ID da organização
345678901
e conceder à conta de serviçoserviceAccount:test-proj1@example.domain.com
o papel deroles/servicehealth.viewer
, execute:bash activateProjects.sh 345678901 "serviceAccount:test-proj1@example.domain.com"
O Personalized Service Health leva até 24 horas para começar a processar eventos de integridade do serviço.