Controllo dell'accesso all'API Service Control

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

I ruoli IAM roles/servicemanagement.serviceController, roles/owner e roles/editor includono queste autorizzazioni e possono essere utilizzate per concederle. Ti consigliamo di utilizzare il ruolo IAM roles/servicemanagement.serviceController per eseguire i servizi gestiti. Anche se anche roles/owner e roles/editor concedono queste autorizzazioni, il ruolo più ristretto è più adatto per motivi di sicurezza.

Modello di risorsa

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

  • Progetto producer di servizi: un progetto producer di servizi potrebbe disporre di zero o più servizi gestiti. Il progetto di producer di servizi è l'elemento 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 progetto Google Cloud che ha abilitato il servizio.

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

Ti consigliamo vivamente di creare un solo servizio gestito per progetto del producer di servizi per motivi di sicurezza e isolamento. Altrimenti, ad esempio, se il progetto di producer di servizi esaurisce la quota per l'invio di richieste all'API Service Control, più servizi gestiti saranno interessati.

Se hai un servizio multi-tenant, devi concedere il ruolo roles/servicemanagement.serviceController a livello di servizio gestito. Se disponi di un servizio single-tenant, ovvero di un servizio in cui ogni consumer di servizi riceve la propria istanza del servizio gestito, devi concedere il ruolo a livello di consumer di servizi. Per il trattamento 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 con uno dei tre approcci indicati di seguito. Devi essere un 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 seguendo le istruzioni in Concessione, modifica e revoca dell'accesso alle risorse oppure 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, come foo@developer.gserviceaccount.com:

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

Analogamente, 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 definito nella sezione Test con curl della guida Guida introduttiva:

gcurl -d "{
  'policy': {
    'bindings': [ {
      role: 'roles/servicemanagement.serviceController',
      members: 'serviceAccount:SERVICE_ACCOUNT'
    } ]
  }
}" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME:setIamPolicy

Tieni presente che l'esempio precedente sostituirà tutti i criteri IAM del livello di servizio esistenti. Per concedere il nuovo ruolo in modo incrementale, devi includere tutti i criteri IAM nel corpo della richiesta.

Concedi un ruolo a livello di consumer di servizi

Puoi concedere il ruolo roles/servicemanagement.serviceController a livello di consumer di servizio. Le autorizzazioni a livello di consumer di servizio richiedono che la richiesta all'API Service Control deve contenere almeno un ID progetto del consumer di servizio valido. L'esempio seguente utilizza l'alias gcurl definito nella sezione Test con curl della guida Guida introduttiva:

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

Tieni presente che l'esempio precedente sostituirà tutti i criteri IAM a livello di progetto consumer esistenti. Per concedere il nuovo ruolo in modo incrementale, devi includere tutti i criteri IAM nel corpo della richiesta.

Per ulteriori informazioni, consulta la guida all'autenticazione Cloud.