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:
services.check
richiede l'autorizzazioneservicemanagement.services.check
.services.report
richiede l'autorizzazioneservicemanagement.services.report
.services.allocateQuota
richiede l'autorizzazioneservicemanagement.services.quota
.
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. L'API Service Control utilizza le seguenti risorse per fornire le sue funzionalità:
- Progetto di producer di servizi: un progetto di producer di servizi può possedere zero o più servizi gestiti. Il progetto di producer di servizi è il progetto principale dei servizi in questa gerarchia.
- Servizio gestito: un servizio gestito può avere zero o più consumatori di servizi.
- Consumer 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 di producer di servizi, influisce su tutti i servizi gestiti di proprietà del progetto del produttore. Se un ruolo viene concesso a livello di servizio gestito, interessa tutti i consumatori 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, saranno interessati più servizi gestiti.
Se hai un servizio multi-tenant, devi concedere il ruoloroles/servicemanagement.serviceController
a livello di servizio gestito. 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 interessa tutti i consumatori 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 che seguono. Per poter concedere i ruoli necessari, devi essere un proprietario del progetto di producer di servizi.
Concedi un ruolo a livello di progetto di producer 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 Google Cloud CLI 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
. 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:setIamPolicy
Tieni presente che l'esempio riportato sopra 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 consumatore 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 la richiesta all'API Service Control debba contenere almeno un ID progetto consumer di servizi valido. 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.