In questa pagina viene spiegato come caricare una chiave pubblica per un account di servizio. Dopo aver caricato la chiave pubblica, puoi utilizzare la chiave privata della coppia di chiavi per autenticarti come account di servizio.
Prima di iniziare
Enable the IAM API.
Scopri di più sulle credenziali dell'account di servizio.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per caricare le chiavi dell'account di servizio,
chiedi all'amministratore di concederti il ruolo IAM Amministratore chiavi account di servizio (roles/iam.serviceAccountKeyAdmin
) nel progetto o nell'account di servizio di cui vuoi gestire le chiavi.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.
Per ulteriori informazioni, consulta Ruoli degli account di servizio.
A seconda della configurazione dei criteri dell'organizzazione, potrebbe essere necessario consentire il caricamento delle chiavi degli account di servizio nel progetto prima di caricare una chiave.
Per ottenere le autorizzazioni necessarie per consentire il caricamento delle chiavi dell'account di servizio in un progetto, chiedi all'amministratore di concederti i seguenti ruoli IAM nella tua organizzazione:
-
Amministratore criteri organizzazione (
roles/orgpolicy.policyAdmin
) -
Organization Viewer (
roles/resourcemanager.organizationViewer
) -
Amministratore dei tag (
roles/resourcemanager.tagAdmin
)
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per consentire il caricamento delle chiavi dell'account di servizio in un progetto. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per consentire il caricamento delle chiavi dell'account di servizio in un progetto sono necessarie le seguenti autorizzazioni:
-
orgpolicy.constraints.list
-
orgpolicy.customConstraints.create
-
orgpolicy.customConstraints.delete
-
orgpolicy.customConstraints.get
-
orgpolicy.customConstraints.list
-
orgpolicy.customConstraints.update
-
orgpolicy.policies.create
-
orgpolicy.policies.delete
-
orgpolicy.policies.list
-
orgpolicy.policies.update
-
orgpolicy.policy.get
-
orgpolicy.policy.set
-
resourcemanager.organizations.get
-
resourcemanager.projects.listTagBindings
-
resourcemanager.projects.listEffectiveTags
-
resourcemanager.tagKeys.get
-
resourcemanager.tagKeys.list
-
resourcemanager.tagValues.list
-
resourcemanager.tagValues.get
Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati altri ruoli predefiniti.
Consenti il caricamento della chiave dell'account di servizio
Prima di creare una chiave dell'account di servizio, assicurati che il vincolo del criterio dell'organizzazione iam.disableServiceAccountKeyUpload
non sia applicato al tuo progetto. Se questo vincolo viene applicato al tuo progetto,
non puoi caricare le chiavi degli account di servizio in quel progetto.
Ti consigliamo di applicare questo vincolo alla maggior parte dei progetti ed esentare solo i progetti che richiedono effettivamente chiavi del service account. Per ulteriori informazioni metodi di autenticazione alternativi, consulta l'articolo Scegliere il metodo di autenticazione corretto per il tuo caso d'uso.
Per escludere un progetto dall'organizzazione iam.disableServiceAccountKeyUpload
vincolo dei criteri, chiedi a un amministratore dei criteri dell'organizzazione di fare quanto segue:
-
A livello di organizzazione, crea una chiave e un valore del tag che utilizzerai per definire se un progetto o una cartella deve essere esente dal criterio dell'organizzazione. Consigliamo di creare un tag con la chiave
disableServiceAccountKeyUpload
e i valorienforced
enot_enforced
.Per informazioni su come creare chiavi e valori dei tag, consulta la sezione Creazione e definizione di un nuovo tag.
-
Collega il tag
disableServiceAccountKeyUpload
all'organizzazione e imposta il suo valore suenforced
. Tutti i progetti o le cartelle dell'organizzazione ereditano questo valore del tag, a meno che non venga sovrascritto con un valore del tag diverso.Per informazioni su come collegare i tag alle risorse, consulta Collegamento di tag a Google Cloud.
-
Per ogni progetto o cartella che vuoi escludere dal criterio dell'organizzazione, allega
disableServiceAccountKeyUpload
e imposta il valore sunot_enforced
. Impostare un valore del tag per un progetto o una cartella in questo modo sostituisce il valore del tag ereditato dall'organizzazione. -
Crea o aggiorna il criterio dell'organizzazione che impedisce il caricamento delle chiavi degli account di servizio in modo che per impedire l'applicazione del vincolo per le risorse esenti. Questo criterio deve avere le seguenti regole:
-
Configura il vincolo
iam.disableServiceAccountKeyUpload
in modo che non venga applicato alle risorse con il tagdisableServiceAccountKeyUpload: not_enforced
. La condizione in questa regola dovrebbe essere la seguente:resource.matchTag(\"ORGANIZATION_ID/disableServiceAccountKeyUpload\", \"not_enforced\")
-
Configura il vincolo
iam.disableServiceAccountKeyUpload
da applicare su tutte le altre risorse.
Per scoprire come creare criteri dell'organizzazione con condizioni dei tag, consulta l'articolo sull'impostazione di criterio dell'organizzazione con tag.
-
Carica una chiave pubblica per un account di servizio
Puoi caricare la parte di chiave pubblica di una coppia di chiavi gestita dall'utente per associarla a un account di servizio. Dopo aver caricato la chiave pubblica, puoi utilizzare la chiave privata della coppia di chiavi come chiave dell'account di servizio.
La chiave che carichi deve essere una chiave pubblica RSA inserita in un certificato X.509 v3 e codificata in base64. Puoi utilizzare strumenti come OpenSSL per generare una chiave e un certificato in questo formato.
Non includere informazioni private nel certificato X.509. In particolare, utilizza un argomento generico e non aggiungere attributi facoltativi. I certificati sono visibili pubblicamente; le informazioni private contenute nel certificato sono visibili a chiunque lo recuperi. Per ulteriori informazioni, consulta Evitare di divulgare informazioni riservate nei certificati X.509 caricati.
Ad esempio, il seguente comando genera una coppia di chiavi RSA a 2048 bit e inserisce la chiave pubblica in un certificato autofirmato valido per 365 giorni:
openssl req -x509 -nodes -newkey rsa:2048 -days 365 \
-keyout /path/to/private_key.pem \
-out /path/to/public_key.pem \
-subj "/CN=unused"
Potrai quindi caricare il file public_key.pem
come chiave pubblica per un servizio
.
Console
- Nella console Google Cloud, vai alla pagina Account di servizio.
I passaggi rimanenti vengono visualizzati nella console Google Cloud.
- Seleziona un progetto.
- Nella pagina Account di servizio, fai clic sull'indirizzo email dell'account di servizio per cui vuoi caricare una chiave.
- Fai clic sulla scheda Chiavi.
- Fai clic sul menu a discesa Aggiungi chiave, quindi seleziona Carica chiave esistente.
- Fai clic su Sfoglia, quindi trova e seleziona il file della chiave pubblica. In alternativa, puoi copiare e incollare il contenuto del file della chiave pubblica nella casella Incolla una chiave esistente.
- Fai clic su Carica.
gcloud
Esegui la
gcloud iam service-accounts keys upload
per caricare una chiave pubblica per la firma delle chiavi degli account di servizio.
Sostituisci i seguenti valori:
KEY_FILE
: il percorso del file contenente i dati della chiave da caricare, ad esempio./public_key.pem
.SA_NAME
: il nome dell'account di servizio per cui caricare una chiave.PROJECT_ID
: l'ID del tuo progetto Google Cloud.
gcloud iam service-accounts keys upload KEY_FILE \ --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
L'output contiene un identificatore univoco per la chiave caricata:
Name: projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0
Per determinare se il comando è andato a buon fine, esegui il comando
gcloud iam service-accounts keys list
:
gcloud iam service-accounts keys list \ --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
L'output conterrà lo stesso identificatore univoco restituito dopo la creazione della chiave:
KEY_ID | CREATED_AT | EXPIRES_AT | DISATTIVATO |
c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0 | 2019-06-26T21:01:42Z | 9999-12-31T23:59:59Z |
REST
Il metodo projects.serviceAccounts.keys.upload
carica la chiave pubblica da una coppia di chiavi gestita dall'utente e la aggiunge all'account di servizio.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: il tuo progetto Google Cloud ID. Gli ID progetto sono stringhe alfanumeriche, ad esempiomy-project
.SA_NAME
: il nome dell'account di servizio a cui associare la chiave.PUBLIC_KEY_DATA
: i dati della chiave pubblica per la coppia di chiavi. Deve essere una chiave pubblica RSA inserita in un certificato X.509 v3. Codifica i dati della chiave pubblica in base64, inclusa la prima riga,-----BEGIN CERTIFICATE-----
, e l'ultima riga,-----END CERTIFICATE-----
.
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys:upload
Corpo JSON della richiesta:
{ "publicKeyData": "PUBLIC_KEY_DATA" }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0", "validAfterTime": "2020-05-17T19:31:19Z", "validBeforeTime": "2021-05-17T19:31:19Z", "keyAlgorithm": "KEY_ALG_RSA_2048", "keyOrigin": "USER_PROVIDED", "keyType": "USER_MANAGED" }
Disattiva i caricamenti della chiave pubblica
Per disattivare la possibilità di caricare le chiavi per il progetto, consulta Limitare il caricamento delle chiavi dell'account di servizio.
Passaggi successivi
- Scopri come creare ed eliminare le chiavi dell'account di servizio.
- Scopri come elencare e ottenere le chiavi degli account di servizio.
- Informazioni su alternative alle chiavi degli account di servizio per l'autenticazione.
- Scopri come utilizzare le chiavi dell'account di servizio per autenticarti come account di servizio.
- Consulta le best practice per la gestione delle chiavi degli account di servizio.
Provalo
Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
Inizia gratuitamente