Zugriff auf Instanzen mit OS Login verwalten

Mit OS Login haben Sie die Möglichkeit, den SSH-Zugriff auf Linux-Instanzen mithilfe von Compute Engine-IAM-Rollen zu verwalten. Diese Vorgehensweise ist eine Alternative zur manuellen Verwaltung des Instanzzugriffs, bei der Sie SSH-Schlüssel in Metadaten einfügen und entfernen.

So konfigurieren Sie OS Login und stellen eine Verbindung mit Ihren Instanzen her:

  1. Aktivieren Sie die Funktion OS Login für Ihr Projekt oder einzelne Instanzen.
  2. Weisen Sie sich selbst, den Projektmitarbeitern oder den Mitarbeitern in Ihrer Organisation die erforderlichen IAM-Rollen zu.
  3. Führen Sie optional einen der folgenden Schritte aus:
  4. Stellen die eine Verbindung zu den Instanzen her.
  5. Überprüfen Sie das erwartete Anmeldeverhalten.

Beschränkungen

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

  • Image-Familien von Windows Server und SQL Server unterstützen OS Login noch nicht.

OS Login aktivieren oder deaktivieren

Bevor Sie den Instanzzugriff mithilfe von IAM-Rollen verwalten können, müssen Sie die Funktion OS Login aktivieren. Erstellen Sie dazu ein Metadaten-Schlüssel/Wert-Paar in Ihrem Projekt oder in den Metadaten Ihrer Instanz: enable-oslogin=TRUE. Setzen Sie den Metadatenwert auf FALSE, um OS Login zu deaktivieren. Sie können die Funktion beispielsweise für das gesamte Projekt aktivieren, indem Sie enable-oslogin=TRUE auf Projektebene verwenden, aber für die Instanzen, die OS Login noch nicht unterstützen, enable-oslogin=FALSE einstellen.

Sie haben folgende Möglichkeiten, den Metadatenwert enable-oslogin auf Ihre Projekte oder Instanzen anzuwenden:

Konsole

Legen Sie den Wert enable-oslogin in den projektweiten Metadaten fest, sodass er für alle Instanzen im Projekt gültig ist:

  1. Öffnen Sie die 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 die Funktion zu deaktivieren.
  4. Klicken Sie auf Speichern, um die Änderungen zu übernehmen.

Bei allen Betriebssystemen außer CoreOS wird diese Änderung in den VMs 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 Stopp- und dann einen Startvorgang für die Instanzen aus.

Stellen Sie in den Metadaten einer vorhandenen Instanz enable-oslogin ein:

  1. Öffnen Sie die 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 der Funktion 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 Stopp- und dann einen Startvorgang für die Instanzen aus.

Stellen Sie beim Erstellen einer Instanz in den Instanzmetadaten enable-oslogin ein:

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

    Die Seite VM-Instanzen aufrufen

  2. Klicken Sie auf Instanz erstellen.
  3. Tragen Sie auf der Seite Eine neue Instanz erstellen die gewünschten Eigenschaften 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 der Funktion auszuschließen.
  5. Klicken Sie auf Erstellen, um die Instanz zu erstellen.

gcloud

Legen Sie den Wert enable-oslogin in den projektweiten Metadaten fest, sodass er für alle Instanzen im Projekt gültig ist:

Aktivieren Sie OS Login im gcloud-Befehlszeilentool mit dem Befehl project-info add-metadata und oslogin=TRUE:

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

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

Bei allen Betriebssystemen außer CoreOS wird diese Änderung in den VMs 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.

Stellen Sie in den Metadaten einer vorhandenen Instanz enable-oslogin ein:

Aktivieren Sie OS Login im gcloud-Befehlszeilentool mit dem Befehl instances add-metadata und mit oslogin=TRUE:

gcloud compute instances add-metadata [INSTANCE_NAME] --metadata enable-oslogin=TRUE

Alternativ können Sie enable-oslogin auf FALSE setzen, um OS Login für Ihre Instanz auszuschließen.

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.

Stellen Sie beim Erstellen einer Instanz in den Instanzmetadaten enable-oslogin ein:

Aktivieren Sie OS Login im gcloud-Befehlszeilentool mit dem Befehl instances create und mit oslogin=TRUE:

gcloud compute instances create [INSTANCE_NAME] --metadata enable-oslogin=TRUE

Alternativ können Sie enable-oslogin auf FALSE setzen, um OS Login für Ihre Instanz auszuschließen.

Zusätzlich zu den erforderlichen Metadatenwerten muss auf der Instanz die neueste Version der Linux-Gastumgebung installiert sein. Wenn auf einzelnen Instanzen benutzerdefinierte Images ausgeführt werden, die Sie importiert haben, installieren Sie die Linux-Gastumgebung auf diesen Instanzen, um die OS Login-Funktion zu aktivieren.

Nach der Aktivierung von OS Login auf den Instanzen in Ihrem Projekt können Sie Nutzern Berechtigungen zuweisen, damit diese Verbindungen zu diesen Instanzen herstellen können.

OS Login-Rollen für Nutzerkonten konfigurieren

OS Login-IAM-Rollen erteilen

Sobald OS Login auf einer oder mehreren Instanzen in Ihrem Projekt aktiviert ist, akzeptieren diese Instanzen nur Verbindungen von Nutzerkonten, die die für Ihr Projekt oder Ihre Organisation erforderlichen IAM-Rollen haben.

Beispielsweise können Sie Nutzern auf folgende Weise Instanzzugriff gewähren:

  1. Weisen Sie den Nutzern die erforderlichen Rollen für den Instanzzugriff zu. Die Nutzer brauchen folgende Rollen:

  2. Als Organisationsadministrator können Sie Mitgliedern außerhalb Ihrer Organisation Zugriff auf Instanzen gewähren. Dazu weisen Sie ihnen auf Organisationsebene die Rolle roles/compute.osLoginExternalUser zu.

Nutzer können keine Details zu Ihren Instanzen oder den externen IP-Adressen für diese Instanzen ansehen, es sei denn, Sie geben diese Details direkt an sie weiter. Damit Nutzer die Details Ihrer Instanzen ansehen können, benötigen sie zusätzliche IAM-Rollen. Mit der Rolle roles/compute.viewer können Nutzer beispielsweise alle Ressourcen in Ihrem Projekt anzeigen lassen, einschließlich der Instanzdetails.

OS Login-IAM-Rollen entziehen

Um den Nutzerzugriff auf Instanzen mit aktiviertem OS Login aufzuheben, entfernen Sie die Nutzerrollen aus dem Nutzerkonto. Dem Nutzerkonto sind dann zwar weiterhin öffentliche SSH-Schlüssel zugeordnet, sie können jedoch für die Instanzen nicht mehr verwendet werden.

Verbindung zu Instanzen herstellen

Nach der Konfiguration der erforderlichen Rollen können Sie mit den Compute Engine-Tools Verbindungen zu einer Instanz herstellen. Compute Engine generiert automatisch SSH-Schlüssel und ordnet sie Ihrem Nutzerkonto zu.

Alternativ können Sie mit Drittanbietertools Verbindungen zu Instanzen herstellen. Dafür müssen Sie eigene SSH-Schlüssel erstellen und die öffentlichen Schlüssel Ihrem Nutzerkonto hinzufügen. Die Instanz ruft den öffentlichen Schlüssel von Ihrem Nutzerkonto ab. Sie können eine Verbindung mit der Instanz herstellen, wenn Sie den korrekten Nutzernamen und den passenden privaten SSH-Schlüssel angeben.

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

Nutzern außerhalb Ihrer Organisation Instanzzugriff gewähren

Standardmäßig können Nutzer außerhalb Ihrer Organisation keine SSH-Schlüssel für Instanzen in Ihrer Organisation festlegen oder Zugriff auf Instanzen in Ihrer Organisation erhalten. In einigen Situationen kann es jedoch erforderlich sein, Nutzern Instanzzugriff zu gewähren, die zu einer anderen Organisation gehören oder ein privates gmail.com-Konto von Google haben.

Die IAM-Rolle roles/compute.osLoginExternalUser ermöglicht externen Google-Konten die Interaktion mit den anderen OS Login-Rollen, da sie die Möglichkeit erhalten, POSIX-Kontoinformationen zu konfigurieren.

Weisen Sie Nutzern außerhalb Ihrer Organisation die Rolle roles/compute.osLoginExternalUser und andere erforderliche Rollen für den Zugriff auf OS Login-Instanzen zu.

  1. Wechseln Sie zur Auswahlseite für Projekte und Organisationen.

    Weiter zur Auswahlseite für Projekte und Organisationen

  2. Wählen Sie im Drop-down-Menü "Organisation" Ihre Organisation aus.
  3. Klicken Sie auf Alle, um alle Organisationen aufzurufen.
  4. Klicken Sie auf den Namen der Organisation.
  5. Klicken Sie auf Hinzufügen, um einem Nutzer eine neue Rolle zuzuweisen.
  6. Geben Sie den Nutzernamen des Nutzers an, für den Sie den Instanzzugriff konfigurieren möchten.
  7. Klicken Sie auf Rolle auswählen, um festzulegen, welche Rollen Sie dem Nutzer zuweisen möchten.
  8. Wählen Sie die Rolle Externer Nutzer von Compute OS Login aus, die in der Liste der Compute Engine-Rollen aufgeführt ist.
  9. Klicken Sie auf Hinzufügen, um zu bestätigen, dass Sie dem Nutzer die ausgewählte Rolle zuweisen möchten.
  10. Sofern noch nicht geschehen, müssen Sie dem Nutzer auf Projekt- oder Organisationsebene die anderen Rollen für den Zugriff auf Instanzen mit OS Login zuweisen.

Der Nutzer kann jetzt Verbindungen zu Instanzen in Ihrem Projekt herstellen, für die OS Login aktiviert ist.

SSH-Schlüssel zu Nutzerkonten hinzufügen

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

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

gcloud

Die gcloud compute os-login-Befehle sind nur für Google Cloud SDK in der 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]

Dabei gilt:

  • [KEY_FILE_PATH] ist der Pfad zum öffentlichen SSH-Schlüssel auf Ihrer lokalen Workstation.
  • [EXPIRE_TIME] ist ein optionales Flag, um eine Ablaufzeit für den öffentlichen SSH-Schlüssel festzulegen. Sie können z. B. 30m angeben, damit der SSH-Schlüssel nach 30 Minuten abläuft. Gültige Einheiten für dieses Flag sind s für Sekunden, m für Minuten, h für Stunden oder d für Tage. Wenn Sie den Wert auf 0 setzen, ist keine Ablaufzeit angegeben.

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]"
}

Dabei gilt:

  • [ACCOUNT_EMAIL] ist die E-Mail-Adresse des verwalteten Nutzerkontos.
  • [SSH_KEY] ist der öffentliche Schlüssel, den Sie auf das Konto anwenden möchten.
  • [EXPIRATION_TIMESTAMP] ist die Ablaufzeit des Schlüssels in Mikrosekunden seit der Epoche.

Directory API

Domainadministratoren einer Organisation können die Directory API verwenden, um SSH-Schlüssel zum Konto eines anderen Nutzers in ihrer Organisation hinzuzufügen. Sie können beispielsweise eine PUT-Anfrage an die Methode directory.users.update senden, die einen oder mehrere SSH-Einträge sshPublicKeys enthält.

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]"
  }
 ]
}

Dabei gilt:

  • [USER_ID_KEY] ist eine unveränderliche ID für den Nutzer.
  • [SSH_KEY] ist ein öffentlicher Schlüssel, den Sie auf das Konto anwenden möchten.
  • [EXPIRATION_TIMESTAMP] ist die Ablaufzeit eines Schlüssels in Mikrosekunden seit der Epoche.

Wenn Sie alle Schlüssel aus einem Konto entfernen möchten, geben Sie "sshPublicKeys": null als Text an:

PUT https://www.googleapis.com/admin/directory/v1/users/[USER_ID_KEY]

{
  "sshPublicKeys": null
}

Dabei ist [USER_ID_KEY] eine unveränderliche ID für den Nutzer.

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 Nutzernamen Ihres Kontos zu ermitteln:

gcloud compute os-login describe-profile

name: [ACCOUNT_EMAIL]
posixAccounts:
⋮
  username: [USER_NAME]
⋮

Dabei gilt:

  • [ACCOUNT_EMAIL] ist die E-Mail-Adresse des verwalteten Nutzerkontos.
  • [USER_NAME] ist der Nutzername zum Herstellen von SSH-Verbindungen. Dieser wird standardmäßig aus Ihrer [ACCOUNT_EMAIL] generiert.

Nutzerkonten mithilfe der Directory API bearbeiten

Organisationsadministratoren können die Anmeldeeinstellungen der Instanz für Nutzerkonten sowie viele andere Nutzereigenschaften ändern. Informationen zur Einrichtung von Administratoren finden Sie im Leitfaden zur Directory API. Mit dieser API können Sie die SSH-Schlüssel eines Nutzers hinzufügen und entfernen, POSIX-Kontoinformationen ändern und den Nutzernamen ändern, mit dem sich die Nutzer auf der Instanz verbinden.

Beispiel: Erstellen Sie eine PUT-Anfrage für die Methode directory.users.update und geben Sie eines oder mehrere Attribute an, die im Nutzerkonto geändert werden sollen:

PUT https://www.googleapis.com/admin/directory/v1/users/[USER_ID_KEY]

{
 "posixAccounts": [
   {
    "username": "[USER_NAME]",
    "uid": "[UID]",
    "gid": "[GID]",
    "homeDirectory": "[USER_HOME_PATH]",
    "shell": "[SHELL_PATH]"
   }
  ],
}

Dabei gilt:

  • [USER_ID_KEY] ist eine unveränderliche ID für den Nutzer.
  • [USER_NAME] ist der von Compute Engine für den Nutzer zur Instanz hinzufügte Nutzername. Dieser Wert muss innerhalb der Organisation eindeutig sein.
  • [UID] ist die auf der Instanz für diesen Nutzer verwendete Nutzer-ID. Als Attribut kommt ein Wert zwischen 1001 und 65000 oder zwischen 65535 und 2147483647 infrage. Die UID muss innerhalb der Organisation eindeutig sein.
  • [GID] ist die ID der Gruppe auf der Instanz, zu der der Nutzer gehört.
  • [USER_HOME_PATH] ist das auf der Instanz für diesen Nutzer festgelegte Basisverzeichnis. Beispiel: /home/example_username.
  • [SHELL_PATH] ist der Pfad zur Standard-Shell des Nutzers, nachdem eine Verbindung mit der Instanz hergestellt wurde. Beispiel /bin/bash oder /bin/sh.

Weitere Informationen zu allen Kontoeigenschaften, die Sie bearbeiten können, finden Sie in der Directory API-Referenz.

Erwartete Anmeldeverhalten

  • 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. Ist die mit dem Google-Profil verknüpfte Nutzer-E-Mail beispielsweise user@example.com, dann lautet der generierte Nutzername user_example_com.

  • Wenn Sie sich mit dem Befehl gcloud compute ssh bei einer Instanz anmelden, wird die folgende Meldung angezeigt:

    WARNING: Using OS Login user [user_example_com] instead of default user [user]

    Diese Meldung bestätigt, dass Sie sich mit Ihrem OS Login-Profil anmelden.

Nächste Schritte

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation