Limita le chiavi SSH dalle VM

Questo documento descrive come impedire agli utenti di accedere alla macchina virtuale (VM) rimuovendo e bloccando le chiavi SSH dalle VM.

Prima di iniziare

  • Se non l'hai già fatto, configura l'autenticazione. Autenticazione è Il processo di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi eseguire l'autenticazione Compute Engine come segue.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

        Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

        gcloud init

      Per ulteriori informazioni, vedi Esegui l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Rimuovi chiavi SSH

Puoi rimuovere le chiavi SSH dalle VM che utilizzano OS Login e VM che utilizzano chiavi SSH basate su metadati.

Rimuovi le chiavi SSH dalle VM che utilizzano OS Login

Le VM che utilizzano OS Login accettano le chiavi SSH associate al tuo account . Puoi rimuovere una chiave SSH pubblica dal tuo account utente utilizzando il Google Cloud CLI o l'API OS Login. Se sei l'amministratore di organizzazione, puoi rimuovere le chiavi SSH dagli account utente utilizzando API Directory. Compute Engine rimuove automaticamente le chiavi scadute dal tuo Account Google.

gcloud

Per rimuovere una chiave SSH pubblica dal tuo account:

  1. Se non sai quale chiave vuoi rimuovere, esegui il comando Comando gcloud compute os-login describe-profile per visualizzare tutte le chiavi associate al tuo account:

    gcloud compute os-login describe-profile
    
  2. Copia il valore fingerprint della chiave che vuoi eliminare.

  3. Rimuovi il token dal tuo account utilizzando Comando gcloud compute os-login ssh-keys remove:

    gcloud compute os-login ssh-keys remove --key=KEY
    

    Sostituisci KEY con la chiave SSH pubblica che vuoi rimuovere o l'impronta di OS Login della chiave che vuoi rimuovere.

REST

Per rimuovere una chiave SSH pubblica dal tuo account:

  1. Se non sai quale chiave vuoi rimuovere, utilizza il metodo Metodo users.getLoginProfile per visualizzare tutte le chiavi associate al tuo account:

    GET https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL/loginProfile
    

    Sostituisci ACCOUNT_EMAIL con l'indirizzo email associati al tuo account.

  2. Copia il valore fingerprint della chiave che vuoi eliminare.

  3. Rimuovi il token dal tuo account utilizzando Metodo users.sshPublicKeys.delete:

    DELETE https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL/sshPublicKeys/FINGERPRINT
    

    Sostituisci quanto segue:

    • ACCOUNT_EMAIL: l'indirizzo email associato a il tuo account
    • FINGERPRINT: l'impronta SHA-256 della chiave per rimuovere

Rimuovi le chiavi SSH dalle VM che utilizzano chiavi basate su metadati

Puoi rimuovere una chiave SSH pubblica dai metadati di progetto o istanza utilizzando Console Google Cloud, gcloud CLI o l'API Compute Engine.

Dopo aver rimosso l'ultima chiave dai metadati per un determinato utente o l'ultima della chiave nei metadati per un determinato utente, Compute Engine elimina il file ~/.ssh/authorized_keys dell'utente sulla VM.

Attenzione: se gestisci chiavi SSH nei metadati, potresti interrompere la funzionalità per consentire ai membri del tuo progetto di connettersi alle VM. Inoltre, rischi di concedere agli utenti, inclusi gli utenti esterni al progetto, l'accesso non intenzionale alle VM. Per ulteriori informazioni le informazioni, vedi rischi della gestione manuale delle chiavi.

Rimuovi una chiave pubblica dai metadati di progetto

Rimuovi una chiave SSH pubblica dai metadati di progetto per rimuovere l'accesso a tutte le VM in un progetto.

Quando rimuovi una chiave dai metadati utilizzando gcloud CLI Nell'API Compute Engine, devi recuperare l'elenco delle chiavi esistenti, modificarlo di tasti per rimuovere i tasti indesiderati e sovrascrivere le chiavi precedenti con l'elenco di chiave da conservare, come spiegato nella sezione seguente.

Console

Per rimuovere una chiave SSH pubblica dai metadati di progetto utilizzando Nella console Google Cloud, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Metadati.

    Vai a Metadati

  2. Fai clic sulla scheda Chiavi SSH.

  3. Fai clic su Modifica nella parte superiore di della pagina.

  4. Accedi alla chiave SSH che vuoi rimuovere e fai clic sul pulsante Pulsante Elimina accanto a chiave SSH.

    Chiave pubblica PuTTYgen.

    Ripeti questo passaggio per ogni chiave SSH che vuoi rimuovere.

  5. Fai clic su Salva.

gcloud

Per rimuovere una chiave SSH pubblica dai metadati di progetto utilizzando gcloud CLI, segui questi passaggi:

  1. Esegui il comando gcloud compute project-info describe per recuperare i metadati per il progetto:

    gcloud compute project-info describe
    

    L'output è simile al seguente:

    ...
    metadata:
      ...
      - key: ssh-keys
        value: |-
          cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF
          baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}
    ...
    
  2. Copia il valore dei metadati ssh-keys.

  3. Crea e apri un nuovo file di testo sulla workstation.

  4. Nel file, incolla l'elenco delle chiavi SSH che hai copiato, quindi elimina le chiavi da rimuovere dai metadati di progetto.

  5. Salva e chiudi il file.

  6. Esegui l' Comando gcloud compute project-info add-metadata per impostare il valore ssh-keys a livello di progetto:

    gcloud compute project-info add-metadata --metadata-from-file=ssh-keys=KEY_FILE
    

    Sostituisci KEY_FILE con uno dei seguenti:

    • il percorso del file che hai creato nel passaggio precedente, se il progetto aveva chiavi SSH esistenti
    • il percorso del nuovo file di chiave SSH pubblico, se il progetto non aveva chiavi SSH esistenti

REST

Per rimuovere una chiave SSH pubblica dai metadati di progetto utilizzando Per l'API Compute Engine, segui questi passaggi:

  1. Utilizza la projects.get per ottenere i valori fingerprint e ssh-keys dai metadati.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
    

    Sostituisci PROJECT_ID con l'ID progetto.

    La risposta è simile alla seguente:

    ...
    "fingerprint": "utgYE_XWtE8=",
    "items": [
     {
      "key": "ssh-keys",
      "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}"
     }
    ]
    ...
    
  2. Copia l'elenco di valori delle chiavi SSH ed elimina le chiavi che vuoi rimuovere.

  3. Utilizza la projects.setCommonInstanceMetadata per rimuovere le chiavi SSH.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata
    
    {
    "items": [
     {
      "key": "ssh-keys",
      "value": "EXISTING_SSH_KEYS"
     }
    ]
    "fingerprint": "FINGERPRINT"
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto
    • EXISTING_SSH_KEYS: l'elenco delle chiavi SSH che vuoi conservare
    • FINGERPRINT: il valore dell'attributo fingerprint dalla risposta alla richiesta projects.get

Rimuovi una chiave SSH pubblica dai metadati dell'istanza

Rimuovi una chiave SSH pubblica dai metadati dell'istanza per rimuovere l'accesso a una singola VM.

Quando rimuovi una chiave dai metadati utilizzando gcloud CLI all'API Compute Engine, devi recuperare l'elenco delle chiavi esistenti, modificare l'elenco dei tasti per rimuovere i tasti indesiderati e sovrascrivere quelli precedenti con l'elenco delle chiavi che vuoi conservare, come spiegato nella sezione seguente.

Console

Per rimuovere una chiave SSH pubblica dai metadati dell'istanza utilizzando il metodo Nella console Google Cloud, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Metadati.

    Vai a Metadati

  2. Fai clic sul nome della VM per cui vuoi rimuovere una chiave.

  3. Fai clic su Modifica.

  4. Nel riquadro centrale, in Chiavi SSH, fai clic su Mostra e modifica. La si espande per mostrare tutte le chiavi SSH pubbliche a livello di istanza.

  5. Fai clic sul pulsante di rimozione accanto al token che vuoi rimuovere:

    Chiave pubblica PuTTYgen.

  6. Fai clic su Salva.

gcloud

Per rimuovere una chiave SSH pubblica dai metadati dell'istanza utilizzando il metodo gcloud CLI, segui questi passaggi:

  1. Corsa Comando gcloud compute instances describe per ottenere i metadati per la VM:

    gcloud compute instances describe VM_NAME
    

    Sostituisci VM_NAME con il nome della VM per la quale devi eseguire aggiungere o rimuovere chiavi SSH pubbliche.

    L'output è simile al seguente:

    ...
    metadata:
    ...
    - key: ssh-keys
     value: |-
       cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF
       baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}
    ...
    
  2. Copia il valore dei metadati ssh-keys.

  3. Crea e apri un nuovo file di testo sulla workstation locale.

  4. Nel file, incolla l'elenco di chiavi SSH che hai copiato, quindi rimuovi le chiavi che vuoi eliminare.

  5. Salva e chiudi il file.

  6. Esegui il comando gcloud compute project-info add-metadata per impostare il valore ssh-keys a livello di progetto:

    gcloud compute instances add-metadata VM_NAME --metadata-from-file ssh-keys=KEY_FILE
    

    Sostituisci quanto segue:

    • VM_NAME: la VM da cui vuoi rimuovere Chiave SSH per
    • KEY_FILE: il percorso del file che contiene l'elenco di tutte le chiavi SSH del progetto

REST

Per rimuovere una chiave SSH pubblica dai metadati dell'istanza utilizzando il metodo Per l'API Compute Engine, segui questi passaggi:

  1. Utilizza la instances.get per ottenere i valori fingerprint e ssh-keys dai metadati.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto
    • ZONE: la zona della VM a cui stai aggiungendo una connessione SSH chiave per
    • VM_NAME: la VM per cui stai aggiungendo una chiave SSH

    La risposta è simile alla seguente:

    ...
    "fingerprint": "utgYE_XWtE8=",
    "items": [
    {
     "key": "ssh-keys",
     "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}"
    }
    ]
    ...
    
  2. Copia l'elenco di valori delle chiavi SSH ed elimina le chiavi che vuoi rimuovere.

  3. Utilizza la instances.setMetadata per rimuovere le chiavi SSH.

    
    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
    
    {
    "items": [
     {
      "key": "ssh-keys",
      "value": "EXISTING_SSH_KEYS
     }
    ]
    "fingerprint": "FINGERPRINT"
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto
    • EXISTING_SSH_KEYS: il valore dell'attributo ssh-keys dalla risposta alla richiesta projects.get
    • FINGERPRINT: il valore dell'attributo fingerprint dalla risposta alla richiesta instances.get

Blocca le chiavi SSH del progetto dalle VM che utilizzano chiavi SSH basate su metadati

Puoi impedire alle VM di accettare le chiavi SSH archiviate nei metadati di progetto bloccando le chiavi SSH del progetto dalle VM. Puoi bloccare le chiavi SSH del progetto dalle VM quando crei una VM dopo aver creato una VM.

Blocca le chiavi SSH del progetto da una VM durante la creazione della VM

Puoi bloccare le chiavi SSH del progetto dalle VM durante la creazione delle VM, utilizzando Console Google Cloud, gcloud CLI o API Compute Engine.

Console

Creare una VM e bloccarla in modo che non accetti le chiavi SSH archiviate nel progetto utilizzando la console Google Cloud, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Crea un'istanza.

    Vai a Crea un'istanza

  2. Specifica i dettagli della VM.

  3. Espandi la sezione Opzioni avanzate e procedi nel seguente modo:

    1. Espandi la sezione Sicurezza.

    2. Seleziona Blocca chiavi SSH a livello di progetto.

  4. Per creare e avviare la VM, fai clic su Crea.

gcloud

Creare una VM e bloccarla in modo che non accetti le chiavi SSH archiviate nel progetto con gcloud CLI, utilizza Comando gcloud compute instances create:

gcloud compute instances create VM_NAME \
    --metadata block-project-ssh-keys=TRUE

Sostituisci VM_NAME con il nome della nuova VM.

REST

Creare una VM e bloccarla in modo che non accetti le chiavi SSH archiviate nel progetto utilizzando Compute Engine, crea una richiesta POST Metodo instances.insert:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

Sostituisci quanto segue:

  • PROJECT_ID: ID progetto
  • ZONE: la zona della VM

Nel corpo della richiesta, fornisci i nomi utente e le chiavi SSH pubbliche nella items proprietà:

...
{
 "items": [
    {
     "key": "block-project-ssh-keys",
     "value": TRUE
    }
   ]
}
...

Blocca le chiavi SSH del progetto da una VM dopo la creazione della VM

Puoi bloccare le chiavi SSH del progetto dalle VM dopo la creazione della VM utilizzando Console Google Cloud, gcloud CLI o API Compute Engine.

Console

Per impedire alle VM di accettare connessioni dalle chiavi SSH archiviate nel progetto utilizzando la console Google Cloud, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Metadati.

    Vai a Metadati

  2. Fai clic sul nome della VM per cui vuoi bloccare le chiavi SSH del progetto.

  3. Fai clic su Modifica.

  4. In Chiavi SSH, seleziona la casella di controllo Blocca chiavi SSH a livello di progetto.

  5. Dopo aver modificato l'impostazione di connessione per le chiavi SSH, fai clic su Salva.

gcloud

Per impedire alle VM di accettare connessioni dalle chiavi SSH archiviate nel progetto utilizzando gcloud CLI, segui questi passaggi:

Esegui l' Comando gcloud compute instances add-metadata:

gcloud compute instances add-metadata VM_NAME --metadata block-project-ssh-keys=TRUE

Sostituisci VM_NAME con il nome della VM per la quale vuoi bloccare le chiavi SSH pubbliche a livello di progetto.

REST

Per impedire alle VM di accettare connessioni dalle chiavi SSH archiviate nel progetto utilizzando l'API Compute Engine, segui questi passaggi:

  1. Utilizza la instances.get per ottenere fingerprint dai metadati.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto
    • ZONE: la zona della VM a cui stai aggiungendo una connessione SSH chiave per
    • VM_NAME: la VM per cui stai aggiungendo una chiave SSH

    La risposta è simile alla seguente:

    ...
    "fingerprint": "utgYE_XWtE8="
    ...
    
  2. Utilizza la Metodo instances.setMetadata per impostare block-project-ssh-keys su TRUE:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
    
    {
    "items": [
     {
      "key": "block-project-ssh-keys",
      "value": TRUE
     }
    ]
    "fingerprint": "FINGERPRINT"
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID è il tuo ID progetto
    • ZONE è la zona in cui si trova l'istanza
    • INSTANCE_NAME è l'istanza in cui vuoi bloccare chiavi a livello di progetto.
    • FINGERPRINT: il valore dell'attributo fingerprint dalla risposta della richiesta instances.get.

Passaggi successivi