Controllo dell'accesso all'API Service Control

Per richiamare l'API Service Control per un servizio gestito, il chiamante deve disporre delle seguenti autorizzazioni Identity and Access Management (IAM) per il servizio:

I ruoli IAM roles/servicemanagement.serviceController, roles/owner e roles/editor includono queste autorizzazioni e possono essere utilizzati per concederle. Ti consigliamo di utilizzare il ruolo IAM roles/servicemanagement.serviceController per eseguire i servizi gestiti. Sebbene roles/owner e roles/editor concedano anche queste autorizzazioni, il ruolo più limitato è migliore per motivi di sicurezza.

Modello di risorsa

IAM applica le policy IAM alle risorse per controllare chi può eseguire quali azioni sulle risorse. L'API Service Control utilizza le seguenti risorse per fornire le sue funzionalità:

  • Progetto di producer di servizi: un producer di servizi progetto può possedere zero o più servizi gestiti. Il progetto di producer di servizi è il progetto padre dei servizi in questa gerarchia.
  • Servizio gestito: un servizio gestito può avere zero o più consumer di servizi.
  • Consumer di servizi: un consumer di servizi si riferisce a un Google Cloud progetto in cui il servizio è stato abilitato.

Il controllo dell'accesso IAM viene applicato al modello di risorsa. Se un ruolo viene concesso a livello di progetto di producer di servizi, influisce su tutti i servizi gestiti di proprietà del progetto di producer. Se un ruolo viene concesso a livello di servizio gestito, influisce su tutti i consumer di servizi del servizio gestito.

Per motivi di sicurezza e isolamento, ti consigliamo vivamente di creare un solo servizio gestito per progetto di producer di servizi. In caso contrario, ad esempio, se il progetto di producer di servizi esaurisce la quota per l'invio di richieste all'API Service Control, verranno interessati più servizi gestiti.

Se hai un servizio multi-tenant, devi concedere il ruolo roles/servicemanagement.serviceController a livello di servizio gestito. Se hai un servizio single-tenant, in altre parole un servizio in cui ogni consumer di servizi ottiene la propria istanza del servizio gestito, devi concedere il ruolo a livello di consumer di servizi. Per l'elaborazione dei dati in background che interessa tutti i consumer di servizi, devi concedere il ruolo a livello di servizio gestito.

Concedi ruoli

Per chiamare l'API Service Control, devi concedere i ruoli necessari ai chiamanti. Puoi concedere i ruoli tramite uno dei seguenti tre approcci. Devi essere il proprietario del progetto di producer di servizi per poter concedere i ruoli necessari.

Concedi un ruolo a livello di progetto di producer di servizi

Puoi concedere i ruoli necessari nel progetto a cui appartiene un servizio gestito a, seguendo le istruzioni riportate in Concedere, modificare e revocare l'accesso alle risorseoppure utilizzare il comando add-iam-policy-binding di Google Cloud CLI per concedere i ruoli.

Ad esempio, puoi concedere i ruoli a un account di servizio, ad esempio foo@developer.gserviceaccount.com:

gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID --member serviceAccount:SERVICE_ACCOUNT --role roles/servicemanagement.serviceController

Allo stesso modo, puoi concedere i ruoli a un account utente, ad esempio bar@gmail.com:

gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID --member user:USER_ACCOUNT --role roles/servicemanagement.serviceController

Concedi un ruolo a livello di servizio

Puoi concedere il ruolo roles/servicemanagement.serviceController a livello di servizio utilizzando curl. L'esempio seguente utilizza l'alias gcurl, che definisci eseguendo il seguente comando alias con il token di autenticazione:

alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl -d "{
  'policy': {
    'bindings': [ {
      role: 'roles/servicemanagement.serviceController',
      members: 'serviceAccount:SERVICE_ACCOUNT'
    } ]
  }
}" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME:setIamPolicy

Concedi un ruolo a livello di consumer di servizi

Puoi concedere il ruolo roles/servicemanagement.serviceController a livello di consumer di servizi. Le autorizzazioni a livello di consumer di servizi richiedono che la richiesta all'API Service Control contenga almeno un ID progetto consumer di servizi valido. L'esempio seguente utilizza l'alias gcurl, che definisci eseguendo il seguente comando alias con il token di autenticazione:

alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl -d "{
  'policy': {
    'bindings': [ {
      role: 'roles/servicemanagement.serviceController',
      members: 'serviceAccount:SERVICE_ACCOUNT'
    } ]
  }
}" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME/consumers/CONSUMER_PROJECT_NUMBER:setIamPolicy

Per saperne di più, consulta la guida all'autenticazione di Cloud.