Abilita Personalized Service Health per tutti i progetti di un'organizzazione o di una cartella

Questo documento descrive uno script che consente l'elaborazione degli eventi di integrità del servizio per ogni progetto in un'organizzazione o cartella. Concede al principal Identity and Access Management (IAM) specificato il ruolo Visualizzatore Service Health, che consente di visualizzare gli eventi e abilitare l'API Service Health.

Prima di iniziare

Make sure that billing is enabled for your Google Cloud project.

Assicurati di disporre delle seguenti autorizzazioni per eseguire lo script:

  • Autorizzazione per elencare i progetti secondari: resourcemanager.projects.list.
  • Autorizzazione per aggiungere IAM (ruolo Visualizzatore stato del servizio) per l'entità IAM specificata: resourcemanager.projects.setIamPolicy.
  • Autorizzazione per attivare i servizi Google Cloud : serviceusage.services.enable.

Un modo per ottenere queste autorizzazioni è chiedere a un amministratore di concederti un ruolo appropriato. Cerca le autorizzazioni nella sezione Ruoli predefiniti della pagina di riferimento per i ruoli di base e predefiniti di IAM. Vengono visualizzati i ruoli che dispongono delle autorizzazioni.

Esegui lo script

Lo script accetta i seguenti parametri:

  • PARENT_ID: ID del progetto principale. L'ID può essere per un'organizzazione o una cartella. Tutti i progetti secondari avranno abilitato Personalized Service Health.
  • (facoltativo) IAM_PRINCIPAL: un identificatore per l'entità o il membro a cui verrà concesso il ruolo Visualizzatore stato del servizio. In genere ha la seguente forma: PRINCIPAL_TYPE:ID. Esempio:user:my-user@example.com.

    Per l'elenco completo dei valori supportati, consulta la sezione Concedere un singolo ruolo della pagina Gestire l'accesso a progetti, cartelle e organizzazioni.

Per eseguire lo script:

  1. Decidi il API VERSION: v1 o v1beta.
  2. Incolla il seguente script in un file:

    #!/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
    
  3. Esegui lo script. Gli esempi seguenti presuppongono che lo script si trovi in un file denominato activateProjects.sh:

    • Per attivare tutti i progetti nell'ID organizzazione 345678901 e concedere all'utenteuser:test-user@gmail.com il ruolo diroles/servicehealth.viewer, esegui:

      bash activateProjects.sh 345678901 "user:test-user@gmail.com"
      
    • Per attivare tutti i progetti nell'ID organizzazione 345678901 e concedere all'account di servizio serviceAccount:test-proj1@example.domain.com il ruolo diroles/servicehealth.viewer, esegui:

      bash activateProjects.sh 345678901 "serviceAccount:test-proj1@example.domain.com"
      

Personalized Service Health impiegherà fino a 24 ore per iniziare a elaborare gli eventi di integrità del servizio.