Controllo dell'accesso all'API Service Control

Per invocare l'API Service Control per un servizio gestito, l'utente che chiama deve disporre delle seguenti autorizzazioni Identity and Access Management (IAM) sul 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. Anche i ruoli roles/owner e roles/editor concedono queste autorizzazioni, ma il ruolo più limitato è migliore per motivi di sicurezza.

Modello di risorsa

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

  • Progetto producer di servizi: un producer di servizi. può 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ù consumatori di servizi.
  • Consumatore di servizi: un consumer di servizi si riferisce a una dal progetto Google Cloud in cui è abilitato il servizio.

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

Ti consigliamo di creare un solo servizio gestito per servizio per motivi di sicurezza e isolamento. In caso contrario, 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 disponi di un servizio multi-tenant, devi concedere il ruolo roles/servicemanagement.serviceController presso il servizio gestito livello. Se hai un servizio monoutente, ovvero 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 interessi tutti i consumer di servizi, devi concedere il ruolo nell'account il livello di servizio.

Concedi ruoli

Per chiamare l'API Service Control, devi concedere i ruoli necessari a i chiamanti. Puoi concedere i ruoli tramite uno dei tre approcci seguenti. Per poter concedere i ruoli necessari, devi essere un proprietario del progetto del produttore di servizi.

Concedi un ruolo a livello di progetto del produttore di servizi

Puoi concedere i ruoli necessari al progetto a cui appartiene un servizio gestito, seguendo le istruzioni riportate in Concessione, modifica e revoca dell'accesso alle risorse oppure utilizzare il comando add-iam-policy-binding della CLI Google Cloud per concedere i ruoli.

Ad esempio, puoi concedere i ruoli a un account di servizio, ad esempiofoo@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. Nell'esempio seguente viene utilizzato l'alias gcurl definita nel Esegui test con curl della 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 a 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 consumatore di servizi. Le autorizzazioni a livello di consumer di servizi richiedono che richiesta all'API Service Control deve contenere almeno una richiesta l'ID progetto del consumer di servizi. L'esempio seguente utilizza l'alias gcurl definito nella sezione Eseguire 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 riportato sopra sostituirà tutti i criteri IAM esistenti a livello di progetto consumer. Per concedere il nuovo ruolo in modo incrementale, devi includere tutti i criteri IAM nel corpo della richiesta.

Per ulteriori informazioni, consulta la Guida di Cloud Auth.