OS Login einrichten

In diesem Thema werden die grundlegenden Schritte zum Einrichten von OS Login erläutert.

Mit OS Login können Sie Compute Engine-IAM-Rollen verwenden, um SSH-Zugriff auf Ihre Linux-Instanzen zu gewähren oder zu entziehen. OS Login ist eine Alternative zum Verwalten des Instanzzugriffs durch Einfügen und Entfernen von SSH-Schlüsseln in Metadaten. Weitere Informationen zu den Vorteilen dieses Features finden Sie unter OS Login.

Informationen zum Aktivieren von OS Login mit einer Sicherheitsebene mithilfe der Bestätigung in zwei Schritten finden Sie unter OS Login mit Bestätigung in zwei Schritten einrichten. Informationen zum Verwalten des Zugriffs auf Ihre VMs finden Sie unter Zugriffsmethode auswählen.

Führen Sie die folgenden Schritte aus, um OS Login zu konfigurieren und eine Verbindung zu Ihren Instanzen herzustellen:

  1. Installieren oder aktualisieren Sie die Gastumgebung.
  2. Optional: Wenn Sie Organisationsadministrator sind, lesen Sie die Informationen unter OS Login in einer Organisation verwalten.
  3. Aktivieren Sie das OS Login-Feature für Ihr Projekt oder einzelne Instanzen.
  4. Weisen Sie sich selbst, den Projektmitarbeitern oder den Mitarbeitern in Ihrer Organisation die erforderlichen IAM-Rollen zu.
  5. (Optional) Sie können benutzerdefinierte SSH-Schlüssel zu den Nutzerkonten für sich selbst, die Projektmitarbeiter oder die Mitarbeiter der Organisation hinzufügen. Alternativ kann Compute Engine die Schlüssel automatisch generieren, wenn Sie eine Verbindung zu den Instanzen herstellen.
  6. Stellen Sie eine Verbindung zu den Instanzen her.
  7. Prüfen Sie das erwartete Anmeldeverhalten.

Vorbereitung

Einschränkungen

  • OS Login wird von Google Kubernetes Engine (GKE) derzeit nicht unterstützt. GKE-Clusterknoten verwenden weiterhin Metadaten-SSH-Schlüssel, wenn OS Login aktiviert ist.

  • OS Login wird von Fedora CoreOS-Images derzeit nicht unterstützt. Verwenden Sie zum Verwalten des Instanzzugriffs auf VMs, die mit diesen Images erstellt wurden, das Ignition-System von Fedora CoreOS.

  • Windows Server- und SQL Server-Images unterstützen OS Login nicht.

Schritt 1: Gastumgebung installieren oder aktualisieren

Auf der Instanz muss die neueste Version der Gastumgebung installiert sein. Bei den meisten öffentlichen Images ist die neueste Version bereits installiert.

Bei Instanzen, auf denen importierte benutzerdefinierte Images ausgeführt werden, installieren Sie die Gastumgebung auf diesen VMs.

Aktualisieren Sie die Gastumgebung ggf. auf die neueste Version.

Schritt 2: (Optional) Verwalten von OS Login in einer Organisation prüfen

Als Organisationsadministrator können Sie bestimmte Konfigurationen festlegen, wie z. B. die Aktivierung von OS Login auf Organisationsebene. Weitere Informationen finden Sie unter OS Login in einer Organisation verwalten.

Schritt 3: OS Login aktivieren oder deaktivieren

Sie können OS Login aktivieren oder deaktivieren, indem Sie Metadatenwerte auf Instanz- oder Projektebene festlegen. Diese Werte können Sie mit der Google Cloud Console oder dem gcloud-Befehlszeilentool festlegen.

Console

Mit den folgenden Optionen können Sie Metadatenwerte auf Ihre Projekte oder VMs anwenden:

  • Option 1: Geben Sie in den projektübergreifenden Metadaten enable-oslogin an, damit der Eintrag für alle Instanzen im Projekt gilt.

    1. Rufen Sie in der Google Cloud Console die Seite Metadaten auf.

      Zur Seite "Metadaten"

    2. Klicken Sie auf Bearbeiten.
    3. Fügen Sie einen Metadateneintrag mit dem Schlüssel enable-oslogin und dem Wert TRUE hinzu. Alternativ können Sie den Wert auf FALSE setzen, um das Feature zu deaktivieren.
    4. Klicken Sie auf Speichern, um die Änderungen zu übernehmen.

    Bei VMs, auf denen nicht CoreOS ausgeführt wird, wird diese Änderung sofort übernommen. Sie müssen die Instanz nicht neu starten. Bei CoreOS-Distributionen müssen Sie die Instanz neu starten, damit die Änderung wirksam wird. Führen Sie dazu einen Stoppvorgang und dann einen Startvorgang für die Instanzen aus.

  • Option 2: Geben Sie in den Metadaten einer vorhandenen Instanz enable-oslogin an.

    1. Öffnen Sie in der Google Cloud Console die Seite VM-Instanzen.

      Zur Seite "VM-Instanzen"

    2. Klicken Sie auf den Namen der Instanz, für die Sie den Metadatenwert festlegen möchten.
    3. Klicken Sie oben auf der Seite mit den Instanzdetails auf Bearbeiten, um die Instanzeinstellungen zu bearbeiten.
    4. Fügen Sie unter Benutzerdefinierte Metadaten einen Metadateneintrag mit dem Schlüssel enable-oslogin und dem Wert TRUE hinzu. Alternativ können Sie den Wert auf FALSE setzen, um die Instanz von dem Feature auszuschließen.
    5. Klicken Sie unten auf der Seite mit den Instanzdetails auf Speichern, um die Änderungen für die Instanz zu übernehmen.

    Bei allen Betriebssystemen außer CoreOS wird diese Änderung sofort übernommen. Sie müssen die Instanz nicht neu starten. Starten Sie die Instanz für CoreOS-Distributionen neu, damit die Änderung wirksam wird. Führen Sie dazu einen Stoppvorgang und dann einen Startvorgang für die Instanzen aus.

  • Option 3: Geben Sie beim Erstellen einer Instanz in den Instanzmetadaten enable-oslogin an.

    1. Rufen Sie in der Cloud Console die Seite VM-Instanzen auf.

      Zur Seite "VM-Instanzen"

    2. Klicken Sie auf Instanz erstellen.
    3. Geben Sie auf der Seite Neue Instanz erstellen die Attribute für Ihre Instanz ein.
    4. Fügen Sie im Abschnitt Metadaten einen Metadateneintrag mit dem Schlüssel enable-oslogin und dem Wert TRUE hinzu. Alternativ können Sie den Wert FALSE festlegen, um die Instanz von dem Feature auszuschließen.
    5. Klicken Sie auf Erstellen, um die Instanz anzulegen.

gcloud

Mit den folgenden Optionen können Sie Metadatenwerte auf Ihre Projekte oder VMs anwenden:

  • Option 1: Geben Sie in den projektübergreifenden Metadaten enable-oslogin an, damit der Eintrag für alle Instanzen im Projekt gilt.

    Verwenden Sie den Befehl project-info add-metadata im gcloud-Befehlszeilentool und legen Sie oslogin=TRUE fest, um OS Login zu aktivieren:

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

    Alternativ können Sie enable-oslogin auf FALSE festlegen, um OS Login zu deaktivieren.

    Bei VMs, auf denen nicht CoreOS ausgeführt wird, wird diese Änderung sofort übernommen. Sie müssen die Instanz nicht neu starten. Bei CoreOS-Distributionen müssen Sie die Instanz neu starten, damit die Änderung wirksam wird.

  • Option 2: Geben Sie in den Metadaten einer vorhandenen Instanz enable-oslogin an.

    Verwenden Sie den Befehl instances add-metadata im gcloud-Befehlszeilentool und legen Sie oslogin=TRUE fest, um OS Login zu aktivieren: Ersetzen Sie dabei instance-name durch den Namen Ihrer Instanz.

    gcloud compute instances add-metadata instance-name \
        --metadata enable-oslogin=TRUE
    

    Alternativ können Sie enable-oslogin auf FALSE setzen, damit OS Login für Ihre Instanz nicht verwendet wird.

    Bei allen Betriebssystemen außer CoreOS wird diese Änderung sofort übernommen. Sie müssen die Instanz nicht neu starten. Starten Sie die Instanz für CoreOS-Distributionen neu, damit die Änderung wirksam wird.

  • Option 3: Geben Sie beim Erstellen einer Instanz in den Instanzmetadaten enable-oslogin an.

    Verwenden Sie den Befehl instances create im gcloud-Befehlszeilentool und legen Sie oslogin=TRUE fest, um OS Login zu aktivieren: Ersetzen Sie dabei instance-name durch den Namen Ihrer Instanz.

    gcloud compute instances create instance-name \
        --metadata enable-oslogin=TRUE
    

    Alternativ können Sie enable-oslogin auf FALSE setzen, damit OS Login für Ihre Instanz nicht verwendet wird.

Nach der Aktivierung von OS Login auf den Instanzen in Ihrem Projekt können Sie Nutzern Berechtigungen zuweisen, mit denen sie sich mit den Instanzen verbinden können.

Schritt 4: OS Login-Rollen für Nutzerkonten konfigurieren

OS Login-IAM-Rollen zuweisen

Nachdem Sie auf einer oder mehreren Instanzen in Ihrem Projekt OS Login aktiviert haben, akzeptieren diese VMs nur noch Verbindungen von Nutzerkonten mit den erforderlichen IAM-Rollen in Ihrem Projekt oder in Ihrer Organisation.

Dem Nutzer müssen die erforderlichen Rollen zugewiesen werden, um OS Login-Zugriff auf diese VMs zu ermöglichen. So gewähren Sie OS Login Zugriff:

  1. Weisen Sie eine der folgenden Rollen für den Instanzzugriff zu:

    Mit dem Befehl gcloud compute instances add-iam-policy-binding können Sie diese Instanzzugriffsrollen auf Instanzebene erteilen.

  2. Wenn Ihre VM-Instanz ein Dienstkonto verwendet, muss jeder Nutzer so konfiguriert sein, dass er die roles/iam.serviceAccountUser-Rolle im Dienstkonto hat. Informationen darüber, wie Sie einem Nutzer Zugriff auf ein Dienstkonto gewähren, finden Sie unter Eigentum und Zugriff auf ein Dienstkonto konfigurieren.

  3. Erteilen Sie Nutzern außerhalb Ihrer Organisation, die auf Ihre VMs zugreifen, zusätzlich zur Instanzzugriffsrolle die Rolle roles/compute.osLoginExternalUser. Diese Rolle muss von einem Organisationsadministrator auf Organisationsebene zugewiesen werden. Weitere Informationen finden Sie unter Nutzern außerhalb Ihrer Organisation Instanzzugriff gewähren.

SSH-Zugriff für Dienstkonto gewähren

Sie können mithilfe von OS Login-Rollen Dienstkonten erlauben, SSH-Verbindungen zu Ihren Instanzen herzustellen. Dies ist für die folgenden Aufgaben nützlich:

So gewähren Sie Dienstkonten SSH-Zugriff:

  1. Erstellen Sie ein Dienstkonto.
  2. Weisen Sie dem Dienstkonto die erforderlichen OS Login-Rollen zu. Dienstkonten erfordern dieselben Rollen wie Nutzerkonten. Informationen zum Konfigurieren von Rollen und Berechtigungen für Dienstkonten finden Sie unter Dienstkonten Rollen zuweisen.
  3. Stellen Sie dem Dienstkonto die Standardanmeldedaten für Anwendungen zur Verfügung, damit es Anfragen an die notwendigen APIs autorisieren kann. Verwenden Sie dazu eine der folgenden Optionen:

Nachdem Sie den Dienstkonten SSH-Zugriff gewährt haben, können Sie die Anwendungen so konfigurieren, dass SSH-Schlüssel erstellt und SSH-Verbindungen zu anderen Instanzen in Ihren VPC-Netzwerken hergestellt werden. In der Anleitung Anwendungen über SSH mit Instanzen verbinden finden Sie eine Beispielanwendung, mit der ein Dienstkonto SSH-Verbindungen herstellen kann.

OS Login-IAM-Rollen entziehen

Um den Nutzerzugriff auf Instanzen mit aktiviertem OS Login aufzuheben, entfernen Sie die Nutzerrollen aus dem Nutzerkonto. Informationen zum Entziehen einer IAM-Rolle eines Nutzers finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.

Wenn der Zugriff eines Nutzers widerrufen wird, hat der Nutzer weiterhin öffentliche SSH-Schlüssel, die mit seinem Konto verknüpft sind. Diese Schlüssel funktionieren jedoch nicht mehr für die VM-Instanzen.

Schritt 5 (Optional): SSH-Schlüssel zu einem Nutzerkonto hinzufügen

Wenn Sie mit Drittanbietertools eine Verbindung zu Ihren VMs herstellen möchten, müssen Sie die SSH-Schlüssel zu Ihrem Nutzerkonto hinzufügen. Wenn Sie eine Verbindung zu Ihren Instanzen mit anderen Optionen wie dem gcloud-Befehlszeilentool oder SSH im Browser herstellen, können Sie diesen Schritt überspringen, da Compute Engine diese Schlüssel automatisch generiert.

Öffentliche SSH-Schlüssel können mit den folgenden Nutzerkontentypen verknüpft werden:

Mit dem gcloud-Befehlszeilentool oder der OS Login API können Sie Ihrem eigenen Konto SSH-Schlüssel hinzufügen. Als Domainadministrator einer Organisation können Sie alternativ die Directory API verwenden, um dem Nutzerkonto SSH-Schlüssel hinzuzufügen.

gcloud

gcloud compute os-login-Befehle sind nur in der Cloud SDK-Version 184 und höher verfügbar.

Verwenden Sie das gcloud-Befehlszeilentool, um öffentliche SSH-Schlüssel mit einem Konto zu verknüpfen.

gcloud compute os-login ssh-keys add \
    --key-file key-file-path \
    --ttl expire-time

Ersetzen Sie Folgendes:

  • key-file-path: Der Pfad zum öffentlichen SSH-Schlüssel auf Ihrer lokalen Workstation. Achten Sie darauf, dass der öffentliche SSH-Schlüssel richtig formatiert ist. Wenn Sie auf Linux-Systemen PuTTYgen verwenden, um die öffentlichen Schlüssel zu generieren, müssen Sie das Format public-openssh verwenden.
  • expire-time: Ein optionales Flag zum Festlegen einer Ablaufzeit für den öffentlichen SSH-Schlüssel. Sie können beispielsweise 30m angeben, damit der SSH-Schlüssel nach 30 Minuten abläuft. Dieses Flag verwendet die folgenden Einheiten:
    • s für Sekunden
    • m für Minuten
    • h für Stunden
    • d für Tage. Setzen Sie den Wert auf 0, wenn der Schlüssel nicht ablaufen soll.

OS Login API

Verwenden Sie die OS Login API, um öffentliche SSH-Schlüssel mit einem Konto zu verknüpfen:

POST https://oslogin.googleapis.com/v1/users/account-email:importSshPublicKey

{
 "key": "ssh-key",
 "expirationTimeUsec": "expiration-timestamp"
}

Ersetzen Sie Folgendes:

  • account-email: Die E-Mail-Adresse des verwalteten Nutzerkontos.
  • ssh-key: Der öffentliche Schlüssel, der auf das Konto angewendet werden soll. Achten Sie darauf, dass der öffentliche SSH-Schlüssel richtig formatiert ist. Wenn Sie auf Linux-Systemen PuTTYgen verwenden, um die öffentlichen Schlüssel zu generieren, müssen Sie das Format public-openssh verwenden.
  • expiration-timestamp: Die Ablaufzeit für den Schlüssel in Mikrosekunden seit der Unix-Epoche.

Directory API

Domainadministratoren einer Organisation können die Directory API-Referenz verwenden, um SSH-Schlüssel zum Konto eines anderen Nutzers in ihrer Organisation hinzuzufügen. Erstellen Sie beispielsweise eine PUT-Anfrage an die Methode directory.users.update mit einem oder mehreren SSH-sshPublicKeys-Einträgen:

PUT https://www.googleapis.com/admin/directory/v1/users/user-id-key

{
 "sshPublicKeys": [
  {
   "key": "ssh-key",
   "expirationTimeUsec": "expiration-timestamp"
  },
  {
   "key": "ssh-key",
   "expirationTimeUsec": "expiration-timestamp"
  }
 ]
}

Ersetzen Sie Folgendes:

  • user-id-key: Eine unveränderliche ID für den Nutzer.
  • ssh-key: Ein öffentlicher Schlüssel, der auf das Konto angewendet werden soll. Achten Sie darauf, dass der öffentliche SSH-Schlüssel richtig formatiert ist. Wenn Sie auf Linux-Systemen PuTTYgen verwenden, um die öffentlichen Schlüssel zu generieren, müssen Sie das Format public-openssh verwenden.
  • expiration-timestamp: Die Ablaufzeit für einen Schlüssel in Mikrosekunden seit der Epoche.

Wenn Sie alle Schlüssel aus einem Konto entfernen möchten, geben Sie "sshPublicKeys": null als Text an. Ersetzen Sie dabei user-id-key durch eine unveränderliche ID für den Nutzer:

PUT https://www.googleapis.com/admin/directory/v1/users/user-id-key

{
  "sshPublicKeys": null
}

Nachdem Sie die Schlüssel zum Konto hinzugefügt haben, können Sie mit dem Nutzernamen Ihres Kontos und mithilfe von Drittanbietertools eine Verbindung zu Instanzen herstellen. Der Administrator Ihrer Organisation kann diesen Nutzernamen ändern.

Führen Sie den Befehl gcloud compute os-login describe-profile aus, um den aktuellen Nutzernamen für Ihr Konto zu ermitteln:

Die Ausgabe könnte beispielsweise so aussehen:

name: '314159265358979323846'
posixAccounts:
- gid: '27182818'
  homeDirectory: /home/user_example_com
  ⋮
  uid: '27182818'
  username: user_example_com
⋮

Schritt 6: Verbindung zu Instanzen herstellen

Wenn Sie eine Verbindung zu einer VM herstellen, haben Sie drei wesentliche Optionen:

Wenn Sie mithilfe des gcloud-Befehlszeilentools oder mit SSH über den Browser eine Verbindung zu einer VM herstellen, generiert Compute Engine automatisch SSH-Schlüssel und verknüpft sie mit Ihrem Nutzerkonto.

Wenn Sie mit einem Drittanbietertool eine Verbindung zu einer Instanz herstellen, müssen Sie die öffentlichen Schlüssel zu Ihrem Nutzerkonto hinzufügen. Die VM erhält Ihren öffentlichen Schlüssel von Ihrem Nutzerkonto und ermöglicht Ihnen, eine Verbindung zur Instanz herzustellen, wenn Sie den richtigen Nutzernamen und den entsprechenden privaten SSH-Schlüssel angeben.

Prüfen Sie das erwartete Anmeldeverhalten, nachdem die Verbindung zur Instanz hergestellt wurde.

Schritt 7: Erwartete Anmeldeverhalten prüfen

  • Auf einigen Instanzen, die OS Login verwenden, erhalten Sie die folgende Fehlermeldung, nachdem die Verbindung hergestellt wurde:

    /usr/bin/id: cannot find name for group ID 123456789

    Ignorieren Sie die Fehlermeldung. Dieser Fehler wirkt sich nicht auf Ihre Instanzen aus.

  • Wenn von einem G Suite-Administrator kein Nutzername festgelegt wurde, generiert OS Login einen Linux-Standardnutzernamen. Dazu fasst es den Nutzernamen und die Domain aus der E-Mail zusammen, die dem Google-Profil des Nutzers zugeordnet sind. Diese Namenskonvention gewährleistet, dass der Nutzername eindeutig ist. Wenn die mit dem Google-Profil verknüpfte Nutzer-E-Mail beispielsweise user@example.com lautet, wird als Nutzername user_example_com erstellt.

    G Suite-Organisationen können die Standardeinstellung ändern und das Domainsuffix für neu erstellte Nutzernamen entfernen. Wenn beispielsweise die mit dem Google-Profil verknüpfte Nutzer-E-Mail user@example.com lautet, wird als Nutzername user erstellt. Weitere Informationen finden Sie unter OS Login API verwalten.

    Wenn ein Nutzer aus einer anderen G Suite-Organisation stammt, wird dem generierten Nutzernamen das Präfix "ext_" vorangestellt. Wenn user@example.com beispielsweise auf eine VM in einer anderen Organisation zugreift, lautet der erstellte Nutzername ext_user_example_com.

  • Wenn Sie sich in einer Instanz mit dem Befehl gcloud compute ssh anmelden, hat die Login-Meldung das folgende Format für den Nutzer user, der zur Domain example.com gehört:

    Using OS Login user user_example_com instead of default user user

    Diese Meldung bestätigt, dass sich der Nutzer mit einem OS Login-Profil angemeldet hat.

Weitere Informationen