Configurare OS Login in modo che richieda i certificati SSH per le connessioni SSH

Le VM che supportano i certificati OS Login supportano le connessioni da chiavi SSH e certificati SSH. I certificati SSH sono chiavi SSH firmate da un'altra chiave attendibile, in questo caso un'autorità di certificazione gestita da OS Login. Questo documento descrive come configurare le VM OS Login in modo che richiedano i certificati SSH per le connessioni SSH e blocchino le connessioni da chiavi SSH non firmate.

Quando configuri OS Login in modo che richieda i certificati SSH per le connessioni alle VM, solo i certificati SSH firmati dall'autorità di certificazione sono autorizzati a connettersi alle VM; le connessioni da chiavi SSH non firmate vengono rifiutate. I certificati SSH hanno una scadenza di cinque minuti, dopodiché non possono più essere utilizzati per connettersi alle VM e deve essere generato un nuovo certificato.

Ti consigliamo di configurare OS Login in modo che richieda i certificati SSH per le connessioni SSH come ulteriore livello di sicurezza contro gli utenti malintenzionati. I certificati SSH hanno una durata breve e sono validi solo per una VM specifica, il che significa che, se vengono compromessi, la loro superficie di attacco è notevolmente inferiore e la loro finestra di attacco è notevolmente più breve rispetto a quella delle chiavi SSH a lunga durata.

Se la tua organizzazione utilizza la federazione delle identità per la forza lavoro, consulta Utilizza la federazione delle identità per la forza lavoro con OS Login per scoprire come attivare i certificati SSH per la tua organizzazione.

Prima di iniziare

  • Configura OS Login e assegna i ruoli IAM per OS Login.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Seleziona la scheda relativa alla modalità di utilizzo degli esempi in questa pagina:

    Console

    Quando utilizzi la Google Cloud console per accedere a Google Cloud servizi e API, non devi configurare l'autenticazione.

    gcloud

    1. Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:

      gcloud init

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  • Imposta una regione e una zona predefinite.

Limitazioni

  • La VM a cui ti connetti deve avere OpenSSH versione 7.4 o successive per utilizzare i certificati SSH.

Richiedi certificati SSH

Puoi configurare OS Login in modo che richieda i certificati SSH per tutte le connessioni SSH alle VM OS Login nel tuo progetto o per singole VM. Dopo aver configurato OS Login in modo che richieda i certificati SSH, le connessioni SSH dalla Google Cloud console e da gcloud CLI utilizzano i certificati SSH per impostazione predefinita. Se non vuoi configurare OS Login in modo che richieda i certificati, ma vuoi utilizzare i certificati per connetterti alle VM, devi connetterti utilizzando strumenti di terze parti, come descritto nella sezione Connetti una VM utilizzando un certificato SSH.

Richiedi certificati SSH per tutte le VM con OS Login abilitato in un progetto

Per richiedere i certificati SSH per tutte le connessioni a tutte le VM che utilizzano OS Login in nel tuo progetto, utilizza la Google Cloud console o gcloud CLI.

Console

Per richiedere i certificati SSH per tutte le connessioni alle VM con OS Login abilitato, utilizza la Google Cloud console per impostare enable-oslogin e enable-oslogin-certificates su TRUE nei metadati del progetto:

  1. Vai alla pagina Metadati.

    Vai a Metadati

  2. Fai clic su Modifica.

  3. Fai clic su Aggiungi elemento.

    1. Nel campo Chiave, inserisci enable-oslogin.
    2. Nel campo Valore, inserisci TRUE.
  4. Fai clic su Aggiungi elemento.

    1. Nel campo Chiave, inserisci enable-oslogin-certificates.
    2. Nel campo Valore, inserisci TRUE.
  5. Fai clic su Salva.

gcloud

Per richiedere i certificati SSH per tutte le connessioni alle VM con OS Login abilitato, utilizza il gcloud compute project-info add-metadata comando per impostare enable-oslogin=TRUE e enable-oslogin-certificates=TRUE nei metadati del progetto:

gcloud compute project-info add-metadata \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

Richiedi certificati SSH su una singola VM con OS Login abilitato

Per richiedere i certificati per tutte le connessioni SSH a una singola VM che utilizza OS Login, utilizza la Google Cloud console o gcloud CLI.

Console

Per richiedere i certificati SSH per tutte le connessioni a una singola VM, utilizza la Google Cloud console per impostare enable-oslogin e enable-oslogin-certificates su TRUE nei metadati dell'istanza:

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic sul nome della VM per cui vuoi richiedere i certificati SSH.

  3. Fai clic su Modifica.

  4. Nella sezione Metadati, fai clic su Aggiungi elemento.

    1. Nel campo Chiave, inserisci enable-oslogin.
    2. Nel campo Valore, inserisci TRUE.
  5. Fai clic su Aggiungi elemento.

    1. Nel campo Chiave, inserisci enable-oslogin-certificates.
    2. Nel campo Valore, inserisci TRUE.
  6. Fai clic su Salva.

gcloud

Per richiedere i certificati SSH per tutte le connessioni a una singola VM, utilizza il gcloud compute instances add-metadata comando per impostare enable-oslogin=TRUE e enable-oslogin-certificates=TRUE nei metadati dell'istanza:

gcloud compute instances add-metadata VM_NAME \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

Sostituisci VM_NAME con il nome della VM.

Connetti una VM utilizzando un certificato SSH

Dopo aver configurato OS Login in modo che richieda i certificati SSH, le connessioni SSH dalla console e da gcloud CLI utilizzano i certificati SSH per impostazione predefinita. Google Cloud Se non vuoi configurare OS Login in modo che richieda i certificati, ma vuoi utilizzare i certificati per connetterti alle VM, devi connetterti utilizzando strumenti di terze parti.

Console

Connettiti alle VM utilizzando SSH nel browser dalla Google Cloud console nel modo seguente:

  1. Nella Google Cloud console, vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Nell'elenco delle istanze della macchina virtuale, fai clic su SSH nella riga di l'istanza a cui vuoi connetterti.

    Pulsante SSH accanto al nome dell'istanza.

gcloud

Utilizza il gcloud beta compute ssh comando per connetterti a una VM utilizzando un certificato:

gcloud beta compute ssh VM_NAME

Sostituisci VM_NAME con il nome della VM a cui vuoi connetterti.

Strumenti di terze parti

Per utilizzare un certificato SSH con un client SSH di terze parti:

  1. Crea una chiave SSH se non ne hai già una.

  2. Firma la tua chiave pubblica SSH utilizzando il metodo projects.locations.signSshPublicKey:

    POST https://oslogin.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey
    
    {
     "ssh_public_key": "PUBLIC_KEY"
     "compute_instance": "COMPUTE_INSTANCE",
     "service_account": "SERVICE_ACCOUNT"
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto del progetto che contiene la VM a cui vuoi connetterti
    • LOCATION: la regione in cui si trova la VM a cui vuoi connetterti
    • PUBLIC_KEY: i contenuti del file della chiave pubblica SSH
    • COMPUTE_INSTANCE: l'istanza Compute Engine a cui connetterti, nel formato projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID.
    • SERVICE_ACCOUNT: il account di servizio collegato all'istanza. Elimina questo campo se all'istanza non è collegato un account di servizio.
  3. Copia il certificato SSH dall'output del metodo projects.locations.signSshPublicKey e salva i contenuti in un nuovo file.

  4. Imposta le autorizzazioni sul file del certificato SSH eseguendo il seguente comando:

    sudo chmod 600 FILE_NAME
    

    Sostituisci FILE_NAME con il nome del file.

  5. Connettiti alla VM utilizzando il seguente comando:

    ssh -i PATH_TO_PRIVATE_KEY -o CertificateFile=PATH_TO_SSH_CERTIFICATE USERNAME@EXTERNAL_IP
    

    Sostituisci quanto segue:

    • PATH_TO_PRIVATE_KEY: il percorso del file della chiave SSH privata.
    • PATH_TO_SSH_CERTIFICATE: il percorso del file del certificato SSH.
    • USERNAME: il tuo nome utente OS Login
    • EXTERNAL_IP: l'indirizzo IP esterno della VM.

Risoluzione dei problemi

Se non riesci a connetterti alle VM che hai configurato in modo che richiedano i certificati SSH, il motivo potrebbe essere uno dei seguenti:

Passaggi successivi