Controllo di ammissione

Introduzione

Questa pagina descrive come utilizzare l'API Service Control v2 per l'ammissione per i servizi gestiti integrati con Service Infrastructure. È destinato ai producer di servizi che vogliono integrare profondamente i propri servizi con Google Cloud.

Service Infrastructure è una piattaforma di base che consente agli sviluppatori di produrre, gestire, in modo sicuro e utilizzare API e servizi. Utilizza un modello di utilizzo dei servizi semplice e generico: un consumer utilizza un servizio gestito da un producer. Tutte le API di Google e Le API Google Cloud usano questo modello, poiché sono anche basato sull'Service Infrastructure.

Quando un client accede a un servizio, tutte le entità coinvolte nell'accesso di solito richiedono un controllo dello stato e della conformità alle norme, includendo il consumatore, servizio, producer, utente, applicazione, rete e risorse. Con Service Infrastructure, questo processo è chiamato controllo di ammissione, che include autenticazione, autorizzazione, controllo, limitazione di frequenza e altro ancora.

API Service Control v2

L'API Service Control v2 fornisce una semplice services.check metodo che fornisce il controllo di ammissione a tutti i servizi integrati con Service Infrastructure. Questo metodo consente di effettuare le seguenti operazioni in un'unica chiamata di metodo:

  • Controllo dello stato
    • Stato abuso
    • Stato fatturazione
    • Stato consumatore
    • Stato del servizio
    • Abilitazione del servizio
  • Autenticazione
    • Token di accesso OAuth di Google
    • JWT firmato con l'account di servizio Google
  • Autorizzazione
  • Controllo
    • Audit log di Cloud. L'audit log è associato al servizio "externalaudit.googleapis.com".

Quando un servizio chiama l'API Service Control, il producer è anche consumer dell'API Service Control. Pertanto, services.check esegue anche il controllo di ammissione durante la chiamata all'API Service Control.

Per fare in modo che un servizio chiami l'API Service Control, devi abilitare l'API Service Control sul progetto producer e le autorizzazioni appropriate per il servizio. Per ulteriori informazioni, vedi Introduzione alle API Cloud e Service Control Controllo degli accessi.

Attributi della richiesta

Quando un client accede a un servizio, quest'ultimo deve astrarre l'accesso. in una o più richieste API che possono essere verificate con il controllo di ammissione. Nella maggior parte dei casi, questi accessi sono vere e proprie richieste API. In altri casi, l'accesso può essere complicato da job di importazione dati o query SQL, e il servizio deve modellare l'accesso in termini di un set di API virtuali richieste ed eseguire il controllo di ammissione su ciascuna richiesta.

Per eseguire il controllo di ammissione utilizzando l'API Service Control, il servizio deve per chiamare il services.check con attributi di richiesta obbligatori. La nella seguente tabella sono elencati gli attributi necessari per il controllo di ammissione. Per la specifica completa, consulta AttributeContext

Attributo Descrizione Esempio
origin.ip L'indirizzo IP del chiamante. "1.2.3.4"
api.service Il nome del servizio API. "endpointsapis.appspot.com"
api.operation Il nome del metodo API. "google.example.hello.v1.HelloService.GetHello"
api.version La stringa della versione API. "v1"
api.protocol Il nome del protocollo API. "https"
request.id Un ID richiesta univoco. "123e4567-e89b-12d3-a456-426655440000"
request.time L'ora della richiesta. "2019-07-31T05:20:00Z"
request.method Il nome del metodo HTTP. "PUBBLICA"
request.scheme Lo schema dell'URL. "https"
request.host L'intestazione dell'host HTTP. "endpointsapis.appspot.com"
request.path Il percorso dell'URL. "/v1/hello"
request.headers Le intestazioni della richiesta HTTP. Le intestazioni richieste sono "Authorization", "user-agent", "origin", "referer".
resource.name Il nome della risorsa di destinazione. "projects/123/topics/news-feed"

Attributi risorsa

Quando un client accede a un servizio, l'accesso può coinvolgere una o più risorse all'interno del servizio, come la lettura di un oggetto o la creazione di un'istanza VM. Il servizio può utilizzare il controllo di ammissione dell'Service Infrastructure per il controllo dell'accesso su supportate da IAM e Audit log di Cloud. Se le tue non richiede il controllo dell'accesso, puoi saltare questa sezione.

Per il controllo dell'accesso, un servizio deve passare gli attributi di risorse services.check insieme agli attributi della richiesta. La tabella seguente mostra gli attributi delle risorse necessari per il controllo dell'accesso.

Attributo Descrizione Esempio
name Nome della risorsa. "projects/123/locations/global/instances/instance-1"
type Il tipo di risorsa. Il formato è "{service}/{Kind}". "endpointsapis.appspot.com/Instance"
permission L'autorizzazione della risorsa. Il formato è "{service}/{kinds}.{verb}". "endpointsapis.appspot.com/instances.get"

Per migliorare le prestazioni e l'efficienza, il metodo services.check ti consente di: possono controllare più autorizzazioni per una singola risorsa in una sola chiamata.

Esecuzione del controllo di ammissione in corso...

Dopo aver eseguito il deployment della configurazione del servizio in Service Management API e il tuo servizio sia pronto a gestire le richieste dei client, puoi inizia a chiamare services.check per il servizio di cui hai eseguito il deployment. Dovresti chiama services.check per eseguire il controllo di ammissione ogni volta che riceve una richiesta dal servizio.

Per sperimentare rapidamente con il controllo di ammissione, puoi utilizzare gcurl per richiamare il metodo services.check. Consulta Introduzione all'API Service Control per i passaggi di configurazione iniziali.

L'esempio seguente mostra come utilizzare il comando gcurl per chiamare services.check su HTTP.

gcurl -d '{
  "service_config_id": "latest",
  "attributes": {
    "origin": {
      "ip": "1.2.3.4"
    },
    "api": {
      "service": "endpointsapis.appspot.com",
      "operation": "google.example.hello.v1.HelloService.GetHello",
      "version": "v1",
      "protocol": "https"
    }
  },
  "request": {
    "id": "123e4567-e89b-12d3-a456-426655440000",
    "time": "2019-07-31T05:20:00Z",
    "scheme": "https",
    "host": "endpointsapis.appspot.com"
    "headers": {
      "authorization": "Bearer xxx",
      "user-agent": "curl/1.0"
    }
  },
  "resources": [
  ]
}' https://servicecontrol.googleapis.com/v2/services/endpointsapis.appspot.com:check
{
}

La risposta del metodo services.check indica se l'ammissione se il controllo è stato superato. Se viene superato, la risposta deve essere vuota. Se non riesce, status nella risposta contiene informazioni sull'errore che il servizio deve restituire al client. Il servizio spesso deve tradurre l'errore le informazioni nel proprio formato. Il servizio può anche utilizzare le informazioni per scopi di logging e monitoraggio.

Per i servizi di produzione, devi utilizzare una delle librerie client fornite da Google per chiamare l'API Service Control. Tali librerie offrono un'ottima usabilità e gestire automaticamente funzionalità comuni, come l'autenticazione. Per ulteriori informazioni, vedi Spiegazione delle librerie client.