Blog
So verwenden Sie OS Login für den SSH-Zugang zu VMs auf GCP

Vor ein paar Wochen habe ich darüber gebloggt, wie Sie Terraform verwenden können , um automatisch SSH-Schlüssel für eine VM auf GCP bereitzustellen.
Eine der Empfehlungen, die ich am Ende gegeben habe, war die Verwendung von OS Login, anstatt die Schlüssel für jede einzelne Maschine zu verwalten.
In diesem Blogbeitrag werfen wir einen Blick auf OS Login und wie es Ihnen helfen kann, Ihre SSH-Schlüssel sauber zu halten.
Was ist OS Login
OS Login vereinfacht die Verwaltung von SSH-Schlüsseln, indem es IAM-Rollen verwendet, um SSH-Schlüssel zu gewähren oder zu widerrufen.
Damit entfällt die Notwendigkeit, diese Schlüssel manuell bereitzustellen, zu verwalten und schließlich zu entfernen.
Da baumelnde Schlüssel ein Sicherheitsrisiko darstellen, ist es eine großartige Funktion, sie überhaupt nicht zu haben!
Erzeugen Sie ein RSA-Schlüsselpaar
Zunächst benötigen Sie ein RSA-Schlüsselpaar, das Sie später zu einem IAM-Benutzer hinzufügen können.
ssh-keygen -t rsa
ssh-add `~/.ssh/id_rsa`
Der Standardspeicherort (
~/.ssh/id_rsa) ist in Ordnung, aber Sie können natürlich auch einen anderen Speicherort verwenden.
Konfigurieren der OS-Anmeldung in Terraform
Lassen Sie uns einen Terraform-Code schreiben, um Google Cloud anzuweisen, den öffentlichen Schlüssel zu unserem IAM-Nutzer hinzuzufügen.
Dies kann durch Abrufen der E-Mail-Adresse des aktuell authentifizierten Nutzers geschehen:
data "google_client_openid_userinfo" "me" {}
resource "google_os_login_ssh_public_key" "cache" {
user = data.google_client_openid_userinfo.me.email
key = file("~/.ssh/id_rsa.pub")
}
Wir müssen auch sicherstellen, dass der IAM-Benutzer OS Login verwenden darf:
resource "google_project_iam_member" "project" {
project = "<gcp_project_id>"
role = "roles/compute.osAdminLogin"
member = "user:${data.google_client_openid_userinfo.me.email}"
}
Wenn Sie Projektinhaber oder Redakteur sind, wird diese Rolle automatisch konfiguriert.
Erstellen Sie eine VM mit aktivierter OS-Anmeldung
Jetzt können wir eine neue Compute-Engine-Instanz erstellen.
Wir erstellen auch eine statische IP-Adresse, deren Wert wir über eine Terraform-Ausgabe abrufen können, wenn es Zeit für eine Verbindung ist.
resource "google_compute_address" "static_ip" {
name = "debian-vm"
}
output "static_ip" {
value = google_compute_address.static_ip.address
}
resource "google_compute_firewall" "allow_ssh" {
name = "allow-ssh"
network = "default"
target_tags = ["allow-ssh"]
source_ranges = ["0.0.0.0/0"]
allow {
protocol = "tcp"
ports = ["22"]
}
}
resource "google_compute_instance" "debian_vm" {
name = "debian"
machine_type = "f1-micro"
tags = ["allow-ssh"]
metadata = {
enable-oslogin: "TRUE"
}
boot_disk {
initialize_params {
image = "debian-cloud/debian-9"
}
}
network_interface {
network = "default"
access_config {
nat_ip = google_compute_address.static_ip.address
}
}
}
Beachten Sie das
enable-oslogin: "TRUE"Metadaten-Flag. Dies ist der Schlüssel, damit dies funktioniert.
Verbinden wir uns
ssh -i ~/.ssh/id_rsa <username>@$(terraform output --raw static_ip)
Hinweis: Der Benutzername, den die VM erkennt, ist Ihre IAM-E-Mail-Adresse, die in Großbuchstaben umgewandelt wurde, z. B.
christerbeke@binx.io->christerbeke_binx_io.Und da haben Sie es! SSH-Zugang zu Ihrer virtuellen Maschine, ohne dass Sie SSH-Schlüssel pro Maschine verwalten und rotieren müssen.
Fazit
Wenn Sie SSH verwenden, um sich mit Ihren virtuellen Maschinen in der Google Cloud zu verbinden, verwenden Sie die Funktion OS Login anstelle von separaten SSH-Schlüsseln.
OS Login verwaltet einen einzigen Schlüssel, der mit Ihrem IAM-Nutzer verknüpft ist und erhöht so die Sicherheit.
Bonus
Neben der verbesserten Sicherheit verfügt OS Login auch über diese beiden praktischen Funktionen:
- Das Kennzeichen
enable-osloginkann auch auf Projektebene gesetzt werden, so dass Sie es nicht für jede einzelne Maschine wiederholen müssen. - Da es über IAM funktioniert, ist Ihre UID auf allen Rechnern gleich!
Verfasst von

Chris ter Beke
Chris ter Beke has been using Google Cloud Platform for over 8 years. He has built multiple SaaS platforms using technologies like Terraform, Kubernetes, Python, and automated CI/CD pipelines.
Unsere Ideen
Weitere Blogs
Contact



