Google Cloud Compute Engine OS Login Kurulumu

Muhammed Celik
İstanbul Data Science Academy
7 min readJun 20, 2023

Bu yazıda Associate Cloud Engineer sertifika sınavında sorulan sorulardan biri olan Compute Engine OS Login SSH özelliğini ve nasıl yapılandırılacağı açıklanmaktadır.

Birden çok sanal makinede veya projede çok sayıda kullanıcıyı yönetmenin önerilen yolu olan OS Login, Google Cloud Platform (GCP) kullanıcılarına ve hizmet hesaplarına SSH erişimi sağlamak için kullanılan bir hizmettir. Geleneksel SSH anahtar tabanlı kimlik doğrulamayı kullanmak yerine, OS Login kimlik doğrulama sistemiyle entegre olarak kullanıcıların ve hizmet hesaplarının SSH oturumlarını yönetmeyi sağlar. Belirli rolleri ve yetkileri olan kullanıcılara sınırlı erişim sağlanabilir. Bu, güvenlik politikalarının uygulanmasını kolaylaştırır ve hassas verilere erişimi kontrol altına alır.

Ayrıca log kayıtları ile izleme yaparak oturum açan kullanıcıları ve etkinlikleri takip etmenizi, denetlemeleri gerçekleştirmenizi ve güvenlik ihlallerini tespit etmenizi sağlar.

OS Login’i kurarken iki farklı tipte kurulum sağlanabilir: kullanıcı tabanlı ve grup tabanlı kurulum.

  1. Kullanıcı Tabanlı Kurulum: Bu kurulum yönteminde, her kullanıcı için ayrı ayrı OS Login ayarları yapılır. Her kullanıcıya ait kimlik doğrulama bilgileri (GCP kimlikleri) kullanılarak SSH erişimi sağlanır. Kullanıcı tabanlı kurulumda, her kullanıcıya özgü roller ve yetkiler atanabilir. Bu şekilde, her kullanıcının erişim düzeyi ve yetkilendirmesi ayrı ayrı yönetilebilir.
  2. Grup Tabanlı Kurulum: Bu kurulum yönteminde, kullanıcılar gruplara atanır ve grup düzeyinde OS Login ayarları yapılır. Grup üyeleri, grup ayarlarına tabi olarak SSH erişimi elde eder. Grup tabanlı kurulumda, bir gruba ait tüm kullanıcılara aynı roller ve yetkiler atanabilir. Bu şekilde, grupların erişim düzeyi ve yetkilendirmesi kolayca yönetilebilir.

Örneğin, iki farklı çalışan için ayrı roller vermek istiyorsanız, kullanıcı tabanlı kurulumu tercih edebilirsiniz. Her çalışan için ayrı bir GCP kimlik belirleyebilir ve bu kimliklerle SSH erişimi sağlayabilirsiniz. Daha sonra, her kullanıcıya farklı roller ve yetkiler atayabilirsiniz. Bu sayede her çalışanın erişim düzeyi ve yetkilendirmesi farklı olabilir.

Başlangıç

İlk olarak sanal makinemize ve kullanıcılarımıza tanımlamak için GCP’nin oluşturduğu default service account yerine farklı bir service account oluşturacağız. Bu alana IAM admin panelinde Service accounts menüsünden ulaşılabilir.

Service accounts, GCP kaynaklarını yönetmek için güvenli ve otomatikleştirilmiş bir kimlik doğrulama yöntemi sunar. Compute Engine sanal makineleri, Kubernetes cluster’ları, Cloud Functions, Cloud Run gibi GCP hizmetleriyle entegre çalışabilir. Her hizmet hesabına özgü kimlik bilgileriyle yetkilendirilmiş hizmetler, belirli kaynaklara erişim sağlayabilir ve gerektiğinde yönetici tarafından yapılandırılabilir.

İlk adımda IAM bölümünden yeni bir servis hesabı oluşturuyoruz.

İkinci adımda rol ataması yapıyoruz. Rol atama, hizmet hesabının projedeki kaynaklara hangi yetkilere sahip olacağını belirlemek için kullanılır. GCP’de çeşitli roller bulunur ve her rol belirli izinleri temsil eder. Örneğin, “Logs viewer” rolü, proje içerisindeki log kayıtlarını görüntülemek için gerekli izinlere sahip bir roldür. Logs viewer rolünü atarsanız, bu hizmet hesabı projedeki log kayıtlarını görüntülemek için yetkilendirilmiş olur. Bu, hizmet hesabının log verilerini okumasına ve görüntülemesine izin verir, ancak logları değiştirmesine veya silmesine izin vermez.

GCP’de farklı roller ve izinler bulunur, bunlar projedeki kaynaklara erişim seviyelerini belirler. Örneğin, “Viewer” rolü projedeki kaynakları görüntülemeye izin verirken, “Editor” rolü kaynakları düzenlemeye ve “Owner” rolü ise tüm projeyi yönetmeye izin verir.

OS Login hizmetini kullanırken, oturum açma işlemlerine ilişkin log kayıtlarını daha iyi görebilirsiniz. OS Login ile oturum açmaları, Cloud Audit Logs tarafından kaydedilir ve GCP Console, Cloud Logging veya GCP API’lerini kullanarak görüntülenebilir.

Aşağıda sanal makinemizi kurduğumuzda kullanacağımız yeni hesabı görebilirsiniz.

Os Login Özellikli Sanal Makine Kurulumu

Compute engine menüsünden oluşturacağım üzerinde Ubuntu image bulunan yeni sanal makineye Identity and API access bölümünden yukarıda oluşturduğum hizmet hesabını tanımladım. Eğer hazırda kurulu bir sanal makineniz varsa Edit bölümünden aynı düzenlemeleri yaparak gerçekleştirebilirsiniz.

Identity and API access seçeneği, sanal makinenizi özelleştirmenizi ve ihtiyaçlarınıza uygun şekilde yapılandırmanızı sağlar. API erişimi yetkilendirmesi sayesinde sanal makinenin belirli API’leri kullanmasını sınırlayabilir ve güvenliği artırabilirsiniz. Ayrıca, belirli bir hizmet hesabını sanal makineye atayarak, sanal makinenin GCP kaynaklarına erişmesini kontrol altında tutabilirsiniz.

Control VM access through IAM permissions: Bu seçenek etkinleştirildiğinde, sanal makineye erişim kontrolü GCP Identity and Access Management (IAM) izinleri aracılığıyla yapılır. Bu yöntem sanal makineye kimlerin erişebileceğini, hangi rollerin ve izinlerin atanabileceğini belirlemenizi sağlar. Bu şekilde, sanal makineye erişim yetkilerini detaylı bir şekilde yönetebilirsiniz. Örneğin, belirli kullanıcılara veya hizmet hesaplarına sınırlı erişim sağlayabilir ve gereksiz erişimleri engelleyebilirsiniz. Biz de bu projede makinemize ve kullanıcılarımıza sınırlı erişim rolleri atayarak buradaki Os Login özelliğini kullanmış olacağız.

Sanal makine kurulumu sırasında Security bölümünde bulunan VM access seçeneğinde Control VM access through IAM permissions ayarını aktif ederek sanal makinemize Os Login özelliği veriyorum. Bu seçeneği işaretlediğimizde hemen altında bulunan “Block project-wide SSH keys” seçeneği otomatik olarak pasif hale gelecektir. Bu seçenek projeye özgü SSH anahtarlarının (SSH keys) sanal makineye erişimini engeller.

Ardından Management bölümü altında Metadata bölümüne gelerek “enable-oslogin” adında bir anahtar (key) ve değer (value) çifti girmemiz gerekiyor. Bu çifti oluşturmak için anahtar olarak “enable-oslogin” ve değer olarak “true” yazmamız gerekmektedir.

Eğer Os Login’i genel olarak projenizdeki tüm makinelere uygulamak istiyorsanız Compute Engine menüsündeki Metadata alanına yukarıdaki gibi aynı şekilde “enable-oslogin” adında bir anahtar (key) ve değer (value) girmemiz gerekiyor.

SSH Bağlantısı İçin yeni Kullanıcı ekleme

Bu adımda IAM & Admin bölümünden yeni bir kullanıcı ekleyip rol tanımlaması yapıyoruz.

Rollerde “OS Admin Login” ve “OS Login” olmak üzere iki farklı kimlik doğrulama yöntemi bulunmaktadır. İşlevsel olarak birbirinden farklıdırlar ve farklı kullanım senaryolarına sahiptirler. OS Admin Login ve OS Login arasındaki ana fark, kimlik doğrulama yöntemlerinde kullanılan mekanizmalardır.

  • Compute OS Admin Login, kullanıcının İnstance’e SSH ile bağlanmasını ve yönetici olarak komut çalıştırmasını sağlar.
  • Compute OS Login ise yönetici erişimi olmaksızın SSH ile bağlanmalarına izin verir.

Hizmet Hesabına Yeni Kullanıcı Ekleme

Bir hizmet hesabına bir kullanıcı eklediğinizde, bu kullanıcı hizmet hesabı üzerinde tanımlanan roller ve izinler çerçevesinde yetkilendirilir. Kullanıcı, hizmet hesabının sahip olduğu kaynaklara erişebilir ve bu kaynaklarda tanımlanan işlemleri gerçekleştirebilir.

Bu şekilde, hizmet hesapları ve kullanıcılar arasında roller ve izinlerle yapılandırılan bir ilişki oluşturarak belirli kullanıcıları belirli hizmetlere yetkilendirebilir ve bu kullanıcıların belirli kaynaklara erişimini kontrol edebilirsiniz.

1 — IAM & Admin menüsünde Service accounts bölümüne geçerek ilk başta oluşturduğumuz Service accounts’a tıklıyoruz.

2 — Ardından Permissions bölümüne geçiyoruz

3 — Burada Grand Access’e tıklayıp ssh izni vereceğimiz mail adresini girip hizmet hesabımızın kullanıcısı olduğunu belirtiyoruz.

Google CLI ve Doğrulama İşlemleri

GCP’de Os Login özelliği etkinleştirilmiş bir makineye uzaktan SSH bağlantısı yapmak için öncelikle Google Cloud SDK (CLI aracı) yüklü olması gerekmektedir. Google Cloud SDK, GCP ile etkileşimde bulunmak ve yönetim görevlerini gerçekleştirmek için kullanılan bir araçtır.

Google Cloud SDK’yı kullanarak, gcloud compute ssh komutunu kullanarak Os Login özelliğine sahip bir makineye herhangi bir konum ve bilgisayardan SSH bağlantısı yapabilirsiniz. Bu komut, kimlik doğrulaması ve yetkilendirme süreçlerini otomatik olarak yönetir ve sizin yerinize gerekli SSH parametrelerini ayarlar.

CLI aracına girdikten sonra kullanıcının gcloud auth login komutunu girmesi ve açılan ekranda mail adresini girdikten sonra kendini doğrulaması gereklidir.

Kullanıcı SSH Bağlantısı

Artık terminalde makine bilgilerini girip ssh bağlantısına geçilebilir. Bunun için aşağıdaki komutlar kullanılarak bağlantı kurulabilir.

İki çeşit SSH bağlantısı kurulabilir. Her ikisi de GCP’deki belirli bir projede, belirli bir bölgede bulunan bir sanal makineye SSH bağlantısı kurmak için gcloud compute ssh komutunu kullanır.

# İki çeşit SSH bağlantı türü bulunmaktadır. Herhangi birini kullanarak bağlantı gerçekleştirebilirsiniz

$gcloud compute ssh --project=PROJECT_ID --zone=ZONE VM_NAME

$gcloud compute ssh INSTANCE_NAME --project PROJECT_ID

# Eğer belirtilen kaynak bulunamadı hatası alırsanız bölgenizi sanal makinenizin kurulu olduğu bölgeye geçirmeniz gerekir

$gcloud config set compute/zone ZONE

# Her ikisi de GCP'deki belirli bir projede, belirli bir bölgede bulunan bir sanal makineye SSH bağlantısı kurmak için gcloud compute ssh komutunu kullanır.

Yeni oluşturduğumuz kullanıcı artık güvenli ve kolay bir şekilde ssh yapabiliyor.

Monitoring İşlemleri

GCP Audit Logging, GCP kaynaklarında gerçekleşen eylemleri kaydetmek ve izlemek için kullanılan bir özelliğidir. Os Login ile ilgili kullanıcı etkinliklerinin ayrıntılı bir şekilde kaydedilmesini sağlar. Audit Logging’i etkinleştirerek, Os Login ile ilgili log kayıtlarını izleyebilir ve denetleyebilirsiniz.

Bu log kayıtları, oturum açma işlemleriyle ilgili aşağıdaki bilgileri içerebilir:

  1. Kullanıcı bilgisi: Oturum açan kullanıcının kimlik bilgileri, örneğin kullanıcı adı veya hizmet hesabı.
  2. IP adresi: Oturum açma işleminin gerçekleştiği IP adresi.
  3. Saat ve tarih: Oturum açma işleminin gerçekleştiği zaman ve tarih bilgisi.
  4. Başarılı veya başarısız oturum açma durumu: Oturum açma işleminin başarılı veya başarısız olduğuna ilişkin bilgi.

İlgili güvenlik olaylarını izlemek, kimlik doğrulama hatalarını tespit etmek veya yetkisiz erişim girişimlerini takip etmek için kullanılabilir. Ayrıca, bu log kayıtlarını diğer log kaynaklarıyla birleştirerek genel bir güvenlik görünümü elde edebilirsiniz.

--

--