Membatasi kunci SSH dari VM

Dokumen ini menjelaskan cara mencegah pengguna mengakses instance virtual machine (VM) dengan menghapus dan memblokir kunci SSH dari VM.

Sebelum memulai

  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses yang digunakan untuk memverifikasi identitas Anda untuk mengakses Trusted Cloud by S3NS layanan dan API. Untuk menjalankan kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.

    gcloud

    1. Instal Google Cloud CLI, lalu login ke gcloud CLI dengan identitas gabungan Anda. Setelah login, lakukan inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

      gcloud init
    2. Set a default region and zone.

    REST

    Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, Anda menggunakan kredensial yang Anda berikan ke gcloud CLI.

      Instal Google Cloud CLI, lalu login ke gcloud CLI dengan identitas gabungan Anda. Setelah login, lakukan inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

      gcloud init

    Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Trusted Cloud .

Menghapus kunci SSH

Anda dapat menghapus kunci SSH publik dari project atau metadata instance menggunakan konsolTrusted Cloud , gcloud CLI, atau Compute Engine API.

Setelah Anda menghapus kunci terakhir dari metadata untuk pengguna tertentu, atau kunci terakhir dalam metadata untuk pengguna tertentu sudah tidak berlaku, Compute Engine akan menghapus file ~/.ssh/authorized_keys pengguna di VM.

Menghapus kunci publik dari metadata project

Hapus kunci SSH publik dari metadata project untuk menghapus akses ke semua VM dalam project.

Saat menghapus kunci dari metadata menggunakan gcloud CLI dan Compute Engine API, Anda harus mengambil daftar kunci yang ada, mengedit daftar kunci untuk menghapus kunci yang tidak diinginkan, dan menimpa kunci lama dengan daftar kunci yang ingin Anda pertahankan, seperti yang dijelaskan di bagian berikut.

Konsol

Untuk menghapus kunci SSH publik dari metadata project menggunakan konsolTrusted Cloud , lakukan langkah berikut:

  1. Di konsol Trusted Cloud , buka halaman Metadata.

    Buka Metadata

  2. Klik tab SSH keys.

  3. Klik Edit di bagian atas halaman.

  4. Buka kunci SSH yang ingin Anda hapus, lalu klik tombol hapus di samping kunci SSH.

    Ulangi langkah ini untuk setiap kunci SSH yang ingin Anda hapus.

  5. Klik Simpan.

gcloud

Untuk menghapus kunci SSH publik dari metadata project menggunakan gcloud CLI, lakukan langkah berikut:

  1. Jalankan perintah gcloud compute project-info describe untuk mendapatkan metadata project:

    gcloud compute project-info describe
    

    Outputnya mirip dengan yang berikut ini:

    ...
    metadata:
      ...
      - key: ssh-keys
        value: |-
          cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF
          baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}
    ...
    
  2. Salin nilai metadata ssh-keys.

  3. Buat dan buka file teks baru di workstation Anda.

  4. Di dalam file tersebut, tempel daftar kunci SSH yang baru saja Anda salin, lalu hapus kunci apa pun yang ingin dihapus dari metadata project.

  5. Simpan dan tutup file tersebut.

  6. Jalankan perintah gcloud compute project-info add-metadata untuk menetapkan nilai ssh-keys di seluruh project:

    gcloud compute project-info add-metadata --metadata-from-file=ssh-keys=KEY_FILE
    

    Ganti KEY_FILE dengan salah satu dari yang berikut ini:

    • jalur ke file yang Anda buat di langkah sebelumnya, jika project memiliki kunci SSH yang ada
    • jalur ke file kunci SSH publik baru, jika project tidak memiliki kunci SSH

REST

Untuk menghapus kunci SSH publik dari metadata project menggunakan Compute Engine API, lakukan hal berikut:

  1. Gunakan metode projects.get untuk mendapatkan nilai fingerprint dan ssh-keys dari metadata.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
    

    Ganti PROJECT_ID dengan ID project Anda.

    Responsnya mirip dengan yang berikut ini:

    ...
    "fingerprint": "utgYE_XWtE8=",
    "items": [
     {
      "key": "ssh-keys",
      "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}"
     }
    ]
    ...
    
  2. Salin daftar nilai kunci SSH dan hapus kunci yang ingin dihapus.

  3. Gunakan projects.setCommonInstanceMetadata untuk menghapus kunci SSH.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata
    
    {
    "items": [
     {
      "key": "ssh-keys",
      "value": "EXISTING_SSH_KEYS"
     }
    ]
    "fingerprint": "FINGERPRINT"
    }
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda
    • EXISTING_SSH_KEYS: daftar kunci SSH yang ingin Anda pertahankan
    • FINGERPRINT: nilai fingerprint dari respons permintaan projects.get

Menghapus kunci SSH publik dari metadata instance

Hapus kunci SSH publik dari metadata instance untuk menghapus akses ke satu VM.

Saat menghapus kunci dari metadata menggunakan gcloud CLI dan Compute Engine API, Anda harus mengambil daftar kunci yang ada, mengedit daftar kunci untuk menghapus kunci yang tidak diinginkan, dan menimpa kunci lama dengan daftar kunci yang ingin disimpan, seperti yang dijelaskan di bagian berikut.

Konsol

Untuk menghapus kunci SSH publik dari metadata instance menggunakan konsolTrusted Cloud , lakukan hal berikut:

  1. Di konsol Trusted Cloud , buka halaman VM instances.

    Buka instance VM

  2. Klik nama VM yang ingin Anda hapus kuncinya.

  3. Klik Edit.

  4. Di bagian SSH Keys, klik Show and edit. Bagian ini akan diperluas untuk menampilkan semua kunci SSH publik level instance.

  5. Klik tombol hapus di samping kunci SSH yang ingin Anda hapus.

    Ulangi langkah ini untuk setiap kunci SSH yang ingin Anda hapus.

  6. Klik Simpan.

gcloud

Untuk menghapus kunci SSH publik dari metadata instance menggunakan gcloud CLI, lakukan langkah berikut:

  1. Jalankan perintah gcloud compute instances describe untuk mendapatkan metadata untuk VM:

    gcloud compute instances describe VM_NAME
    

    Ganti VM_NAME dengan nama VM yang perlu Anda tambahkan atau hapus kunci SSH publik.

    Outputnya mirip dengan yang berikut ini:

    ...
    metadata:
    ...
    - key: ssh-keys
     value: |-
       cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF
       baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}
    ...
    
  2. Salin nilai metadata ssh-keys.

  3. Buat dan buka file teks baru di workstation lokal.

  4. Di dalam file tersebut, tempel daftar kunci SSH yang baru saja Anda salin, lalu hapus kunci yang ingin dihapus.

  5. Simpan dan tutup file tersebut.

  6. Jalankan perintah gcloud compute project-info add-metadata untuk menetapkan nilai ssh-keys di seluruh project:

    gcloud compute instances add-metadata VM_NAME --metadata-from-file ssh-keys=KEY_FILE
    

    Ganti kode berikut:

    • VM_NAME: VM yang ingin Anda hapus kunci SSH-nya
    • KEY_FILE: jalur ke file yang berisi daftar semua kunci SSH project

REST

Untuk menghapus kunci SSH publik dari metadata instance menggunakan Compute Engine API, lakukan hal berikut:

  1. Gunakan metode instances.get untuk mendapatkan nilai fingerprint dan ssh-keys dari metadata.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda
    • ZONE: zona VM yang Anda tambahkan kunci SSH-nya
    • VM_NAME: VM tempat Anda menambahkan kunci SSH

    Responsnya mirip dengan hal berikut ini:

    ...
    "fingerprint": "utgYE_XWtE8=",
    "items": [
    {
     "key": "ssh-keys",
     "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}"
    }
    ]
    ...
    
  2. Salin daftar nilai kunci SSH dan hapus kunci yang ingin dihapus.

  3. Gunakan instances.setMetadata untuk menghapus kunci SSH.

    
    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
    
    {
    "items": [
     {
      "key": "ssh-keys",
      "value": "EXISTING_SSH_KEYS
     }
    ]
    "fingerprint": "FINGERPRINT"
    }
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda
    • EXISTING_SSH_KEYS: nilai kunci ssh-keys dari respons permintaan projects.get
    • FINGERPRINT: nilai fingerprint dari respons permintaan instances.get

Memblokir kunci SSH project dari VM yang menggunakan kunci SSH berbasis metadata

Anda dapat mencegah VM menerima kunci SSH yang disimpan dalam metadata project dengan memblokir kunci SSH project dari VM. Anda dapat memblokir kunci SSH project dari VM saat membuat VM atau setelah membuat VM.

Memblokir kunci SSH project dari VM selama pembuatan VM

Anda dapat memblokir kunci SSH project dari VM selama pembuatan VM menggunakan Trusted Cloud konsol, gcloud CLI, atau Compute Engine API.

Konsol

Untuk membuat instance dan memblokirnya agar tidak menerima kunci SSH yang disimpan dalam metadata project menggunakan konsol Trusted Cloud , lakukan langkah berikut:

  1. Di konsol Trusted Cloud , buka halaman Create an instance.

    Buka halaman Buat instance

  2. Untuk memblokir kunci SSH project, lakukan langkah-langkah berikut:

    1. Di menu navigasi, klik Security.

    2. Perluas bagian Kelola akses.

    3. Untuk menonaktifkan Login OS, hapus centang pada kotak Kontrol akses VM melalui izin IAM.

    4. Centang kotak Block project-wide SSH keys.

  3. Opsional: Tentukan opsi konfigurasi lainnya. Untuk mengetahui informasi selengkapnya, lihat Opsi konfigurasi selama pembuatan instance.

  4. Untuk membuat dan memulai instance, klik Create.

gcloud

Untuk membuat VM dan memblokirnya agar tidak menerima kunci SSH yang disimpan dalam metadata project menggunakan gcloud CLI, gunakan perintah gcloud compute instances create:

gcloud compute instances create VM_NAME \
    --metadata block-project-ssh-keys=TRUE

Ganti VM_NAME dengan nama VM baru.

REST

Untuk membuat VM dan memblokirnya agar tidak menerima kunci SSH yang disimpan dalam metadata project menggunakan Compute Engine, buat permintaan POST ke metode instances.insert:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

Ganti kode berikut:

  • PROJECT_ID: the project ID
  • ZONE: zona VM

Dalam isi permintaan, berikan nama pengguna dan kunci SSH publik di properti items:

...
{
 "items": [
    {
     "key": "block-project-ssh-keys",
     "value": TRUE
    }
   ]
}
...

Memblokir kunci SSH project dari VM setelah pembuatan VM

Anda dapat memblokir kunci SSH project dari VM setelah pembuatan VM menggunakan Trusted Cloud konsol, gcloud CLI, atau Compute Engine API.

Konsol

Untuk mencegah VM menerima koneksi dari kunci SSH yang disimpan dalam metadata project menggunakan konsol Trusted Cloud , lakukan tindakan berikut:

  1. Di konsol Trusted Cloud , buka halaman VM instances.

    Buka instance VM

  2. Klik nama VM yang kunci SSH project-nya ingin Anda blokir.

  3. Klik Edit.

  4. Pada SSH Keys, centang Block project-wide SSH keys.

  5. Setelah selesai mengedit setelan koneksi untuk kunci SSH, klik Save.

gcloud

Untuk mencegah VM menerima koneksi dari kunci SSH yang disimpan di metadata project menggunakan gcloud CLI, lakukan tindakan berikut:

Jalankan perintah gcloud compute instances add-metadata:

gcloud compute instances add-metadata VM_NAME --metadata block-project-ssh-keys=TRUE

Ganti VM_NAME dengan nama VM yang kunci SSH publiknya ingin Anda blokir.

REST

Untuk mencegah VM menerima koneksi dari kunci SSH yang disimpan dalam metadata project menggunakan Compute Engine API, lakukan tindakan berikut:

  1. Gunakan metode instances.get untuk mendapatkan fingerprint dari metadata.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda
    • ZONE: zona VM yang Anda tambahkan kunci SSH-nya
    • VM_NAME: VM tempat Anda menambahkan kunci SSH

    Responsnya mirip dengan hal berikut ini:

    ...
    "fingerprint": "utgYE_XWtE8="
    ...
    
  2. Gunakan metode instances.setMetadata untuk menyetel block-project-ssh-keys ke TRUE:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
    
    {
    "items": [
     {
      "key": "block-project-ssh-keys",
      "value": TRUE
     }
    ]
    "fingerprint": "FINGERPRINT"
    }
    

    Ganti kode berikut:

    • PROJECT_ID adalah ID project Anda
    • ZONE adalah zona tempat instance Anda berada
    • INSTANCE_NAME adalah instance tempat Anda ingin memblokir kunci seluruh project.
    • FINGERPRINT: nilai fingerprint dari respons permintaan instances.get.

Apa langkah selanjutnya?