Controllo dell'accesso all'API Service Control

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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 conferirle. Ti consigliamo di utilizzare il ruolo IAM roles/servicemanagement.serviceController per eseguire i servizi gestiti. Anche se roles/owner e roles/editor concedono queste autorizzazioni, il ruolo più ristretto è migliore per motivi di sicurezza.

Modello di risorsa

IAM applica i criteri IAM sulle risorse per controllare chi può eseguire quali azioni sulla risorsa. L'API Service Control utilizza le seguenti risorse per fornire la sua funzionalità:

  • Progetto producer di servizi: un progetto producer di servizi può avere zero o più servizi gestiti. Il progetto del producer di servizi è l'elemento principale dei servizi in questa gerarchia.
  • Servizio gestito: un servizio gestito può avere zero o più consumer Service.
  • Consumatore di servizi: un consumer di servizi si riferisce a un progetto Google Cloud che ha attivato il servizio.

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

Per motivi di sicurezza e isolamento, ti consigliamo di creare un solo servizio gestito per progetto di producer di servizi. Altrimenti, ad esempio, se il progetto del producer di servizi esaurisce la quota per l'invio di richieste all'API Service Control, saranno 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, ovvero un servizio in cui ogni consumer di servizi riceve la propria istanza del servizio gestito, devi concedergli 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 tre approcci seguenti. Per poter concedere i ruoli necessari, devi essere il proprietario del progetto del producer di servizi.

Concedi un ruolo a livello di progetto producer di servizi

Puoi concedere i ruoli necessari al progetto a cui appartiene un servizio gestito seguendo le istruzioni in Concedere, modificare e revocare l'accesso alle risorse oppure utilizzare il comando dell'interfaccia a riga di comando add-iam-policy-binding di Google Cloud 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

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, come illustrato nell'esempio seguente:

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 servizio richiedono che la richiesta all'API Service Control deve contenere almeno un ID progetto consumer di servizio valido. Ad esempio, puoi concedere i ruoli come illustrato dal comando seguente:

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 ulteriori informazioni, consulta la guida all'autenticazione di Cloud.