Membuat penetapan kebijakan OS


Gunakan kebijakan OS untuk mempertahankan konfigurasi software yang konsisten di seluruh instance virtual machine (VM) Linux dan Windows.

Sebelum memulai

  • Tinjau penetapan kebijakan OS dan kebijakan OS.
  • Tinjau kuota OS Config.
  • Siapkan autentikasi, jika Anda belum melakukannya. Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.

    gcloud

    1. Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init
    2. Menetapkan region dan zona default.

    Terraform

    Untuk menggunakan contoh Terraform di halaman ini dari lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

    1. Menginstal Google Cloud CLI.
    2. Untuk initialize gcloud CLI, jalankan perintah berikut:

      gcloud init
    3. Buat kredensial autentikasi lokal untuk Akun Google Anda:

      gcloud auth application-default login

    Untuk informasi selengkapnya, lihat Siapkan autentikasi untuk lingkungan pengembangan lokal.

    REST

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

      Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init

Sistem operasi yang didukung

Untuk mengetahui daftar lengkap sistem operasi dan versi yang mendukung kebijakan OS, lihat Detail sistem operasi.

Izin

Karena Anda dapat menggunakan kebijakan OS untuk menginstal dan mengelola paket software di VM, pembuatan dan pengelolaan kebijakan OS sama dengan memberikan akses eksekusi kode jarak jauh pada VM.

Saat Anda menyiapkan kebijakan OS, izin IAM digunakan untuk mengontrol akses ke resource kebijakan dan aktivitas akan dicatat dalam log audit. Namun, pengguna masih dapat menjalankan kode di VM yang berpotensi menimbulkan risiko keamanan. Untuk mengurangi risiko ini, sebaiknya Anda hanya memberikan akses yang diperlukan kepada setiap pengguna.

Pemilik project memiliki akses penuh untuk membuat dan mengelola penetapan kebijakan OS. Untuk semua pengguna lainnya, Anda harus memberikan izin. Anda dapat memberikan salah satu peran terperinci berikut:

  • Admin OSPolicyAssignment (roles/osconfig.osPolicyAssignmentAdmin). Berisi izin untuk membuat, menghapus, mengupdate, mendapatkan, dan mencantumkan penetapan kebijakan OS.
  • Editor OSPolicyAssignment (roles/osconfig.osPolicyAssignmentEditor). Berisi izin untuk mengupdate, mendapatkan, dan mencantumkan penetapan kebijakan OS.
  • Viewer OSPolicyAssignment (roles/osconfig.osPolicyAssignmentViewer). Berisi izin akses hanya baca untuk mendapatkan dan mencantumkan penetapan kebijakan OS.

Contoh perintah untuk menetapkan izin

Untuk memberikan akses admin kepada pengguna untuk penetapan kebijakan OS, jalankan perintah berikut:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member user:USER_ID@gmail.com \
        --role roles/osconfig.osPolicyAssignmentAdmin

Ganti kode berikut:

  • PROJECT_ID: ID project
  • USER_ID: nama pengguna Google Workspace

Membuat penetapan kebijakan OS

Untuk membuat dan meluncurkan penetapan kebijakan OS, selesaikan langkah-langkah berikut:

  1. Siapkan VM Manager.
  2. Tetapkan izin yang diperlukan ke pengguna.
  3. Tinjau penetapan kebijakan OS dan kebijakan OS.
  4. Buat resource kebijakan OS.
  5. Untuk membuat dan meluncurkan penetapan kebijakan OS, gunakan salah satu metode berikut:

    Konsol

    Untuk membuat dan meluncurkan penetapan kebijakan OS, selesaikan langkah-langkah berikut:

    1. Di klien lokal Anda, buat atau download kebijakan OS. File ini harus berupa file JSON atau YAML. Untuk mengetahui informasi selengkapnya tentang cara membuat kebijakan OS atau melihat contoh kebijakan OS, lihat kebijakan OS.
    2. Di Konsol Google Cloud, buka halaman Kebijakan OS.

      Buka kebijakan OS

    3. Klik Buat penetapan kebijakan OS.

    4. Di bagian ID Penetapan, beri nama untuk penetapan kebijakan OS. Lihat Konvensi penamaan resource.

    5. Di bagian Kebijakan OS, upload file kebijakan OS.

    6. Di bagian Target VM instances, tentukan VM target.

      • Pilih zona yang berisi VM yang ingin Anda terapkan kebijakan.
      • Pilih kelompok OS.
      • Opsional: Anda dapat memfilter VM lebih lanjut dengan menentukan label pengecualian dan penyertaan.

      Misalnya, Anda dapat memilih semua VM Ubuntu di lingkungan pengujian Anda, dan mengecualikan VM yang menjalankan Google Kubernetes Engine, dengan menentukan hal berikut:

      • Grup OS: ubuntu
      • Sertakan: env:test, env:staging
      • Kecualikan: goog-gke-node

      Pilih VM target.

    7. Tentukan rencana peluncuran.

      • Tentukan ukuran gelombang (disebut juga sebagai anggaran gangguan). Contoh, 10%.
      • Menentukan waktu tunggu. Misalnya, 15 menit.

        Konfigurasi peluncuran.

    8. Klik Mulai peluncuran.

    gcloud

    Untuk membuat dan meluncurkan penetapan kebijakan OS di suatu zona, selesaikan langkah-langkah berikut:

    1. Buat resource penetapan kebijakan OS dalam format JSON atau YAML. File ini menentukan kebijakan OS yang ingin Anda terapkan ke VM, VM target tempat Anda ingin menerapkan kebijakan, dan tingkat peluncuran untuk menerapkan kebijakan OS. Untuk mengetahui informasi selengkapnya tentang file ini dan contoh penetapan, lihat Penetapan kebijakan OS.

    2. Gunakan perintah os-config os-policy-assignments create untuk membuat dan meluncurkan penetapan kebijakan OS di lokasi tertentu.

      gcloud compute os-config os-policy-assignments create OS_POLICY_ASSIGNMENT_ID \
         --location=ZONE \
         --file=OS_POLICY_ASSIGNMENT_FILE \
         --async
      

      Ganti kode berikut:

      • OS_POLICY_ASSIGNMENT_ID: nama untuk penetapan kebijakan OS. Lihat Konvensi penamaan resource.
      • ZONE: zona untuk membuat penetapan kebijakan OS.
      • OS_POLICY_ASSIGNMENT_FILE: jalur absolut ke file penetapan kebijakan OS yang Anda buat di langkah sebelumnya.

      Contoh

      gcloud compute os-config os-policy-assignments create my-os-policy-assignment \
          --location=asia-south1-a \
          --file=/downloads/assignment-config.yaml \
          --async
      

      Outputnya mirip dengan hal berikut ini:

      Create request issued for: [my-os-policy-assignment]
      Check operation [projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa] for status.
      
    3. Catat nama resource yang sepenuhnya memenuhi syarat untuk operasi. Dalam contoh sebelumnya, nama resource yang sepenuhnya memenuhi syarat adalah:

      projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa
      

      Anda dapat menggunakan nama resource yang sepenuhnya memenuhi syarat ini untuk mendapatkan detail peluncuran, atau untuk membatalkan peluncuran. Lihat Peluncuran.

    Terraform

    Untuk membuat penetapan kebijakan OS, gunakan resource google_os_config_os_policy_assignment.

    Contoh berikut memverifikasi apakah server web Apache berjalan di VM CentOS.

    resource "google_os_config_os_policy_assignment" "my_os_policy_assignment" {
    
      name        = "my-os-policy-assignment"
      location    = "us-west1-a"
      description = "An OS policy assignment that verifies if the Apache web server is running on CentOS VMs."
    
      instance_filter {
        # filter to select VMs
        all = false
    
        exclusion_labels {
          labels = {
            label-one = "goog-gke-node"
          }
        }
    
        inclusion_labels {
          labels = {
            env = "test",
          }
        }
    
        inventories {
          os_short_name = "centos"
          os_version    = "7*"
        }
      }
    
      os_policies {
        #list of OS policies to be applied to VMs
        id   = "apache-always-up-policy"
        mode = "ENFORCEMENT"
    
        resource_groups { #list of resource groups for the policy
          resources {
            id = "ensure-apache-is-up"
    
            exec {
              validate {
                interpreter = "SHELL"
                script      = "if systemctl is-active --quiet httpd; then exit 100; else exit 101; fi"
              }
    
              enforce {
                interpreter = "SHELL"
                script      = "systemctl start httpd && exit 100"
              }
            }
          }
    
          inventory_filters {
            os_short_name = "centos"
            os_version    = "7*"
          }
        }
    
        allow_no_resource_group_match = false #OS policy compliance status
        description                   = "An OS policy that verifies if the Apache web server is running on Linux VMs."
      }
    
      rollout {
        #define rollout parameters
        disruption_budget {
          fixed = 1
        }
        min_wait_duration = "3.5s"
      }
    }

    Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

    REST

    Untuk membuat penetapan kebijakan OS pada klien lokal Anda, selesaikan langkah-langkah berikut:

    1. Buat penetapan kebijakan OS. File ini harus berupa file JSON. Untuk mengetahui informasi selengkapnya tentang cara membuat penetapan kebijakan OS atau melihat contoh penetapan kebijakan OS, lihat Penetapan kebijakan OS.

      Jika ingin menggunakan contoh penetapan kebijakan YAML OS, Anda harus mengonversinya menjadi JSON.

    2. Di API, buat permintaan POST ke metode projects.locations.osPolicyAssignments.create.

      Di isi permintaan, tempel spesifikasi penetapan kebijakan OS dari langkah sebelumnya.

      POST https://osconfig.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/OSPolicyAssignments?osPolicyAssignmentId=OS_POLICY_ASSIGNMENT_ID
      
      {
       JSON_OS_POLICY
      }
      

      Ganti kode berikut:

      • PROJECT_ID: project ID Anda
      • OS_POLICY_ASSIGNMENT_ID: nama untuk penetapan kebijakan OS
      • JSON_OS_POLICY: spesifikasi penetapan kebijakan OS yang dibuat di langkah sebelumnya. Nama ini harus dalam format JSON. Untuk mengetahui informasi selengkapnya tentang parameter dan format, lihat Resource: OSPolicyAssignment.
      • ZONE: zona untuk membuat penetapan kebijakan OS

      Contoh

      Misalnya, untuk membuat penetapan kebijakan OS untuk kemampuan observasi Google Cloud yang menginstal agen pemantauan dan logging pada VM yang dipilih menggunakan Penetapan kebijakan OS contoh, selesaikan langkah-langkah berikut:

      1. Mengonversi contoh ke JSON
      2. Buat permintaan berikut:
      POST https://osconfig.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/OSPolicyAssignments?osPolicyAssignmentId=OS_POLICY_ASSIGNMENT_ID
      
      {
        "osPolicies": [
          {
            "id": "setup-repo-and-install-package-policy",
            "mode": "ENFORCEMENT",
            "resourceGroups": [
              {
                "resources": [
                  {
                    "id": "setup-repo",
                    "repository": {
                      "yum": {
                        "id": "google-cloud-monitoring",
                        "displayName": "Google Cloud Monitoring Agent Repository",
                        "baseUrl": "https://packages.cloud.google.com/yum/repos/google-cloud-monitoring-el8-x86_64-all",
                        "gpgKeys": [
                          "https://packages.cloud.google.com/yum/doc/yum-key.gpg",
                          "https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg"
                        ]
                      }
                    }
                  },
                  {
                    "id": "install-pkg",
                    "pkg": {
                      "desiredState": "INSTALLED",
                      "yum": {
                        "name": "stackdriver-agent"
                      }
                    }
                  }
                ]
              }
            ]
          }
        ],
        "instanceFilter": {
          "inclusionLabels": [
            {
              "labels": {
                "used_for": "testing"
              }
            }
          ]
        },
        "rollout": {
          "disruptionBudget": {
            "fixed": 10
          },
          "minWaitDuration": {
            "seconds": 300
          }
        }
      }
      

Peluncuran

Penetapan kebijakan OS di-deploy sesuai dengan kecepatan peluncuran. Artinya, tugas yang menargetkan serangkaian VM dapat di-deploy secara bertahap dan tidak langsung diterapkan ke semua VM. Perubahan diluncurkan secara bertahap untuk memberi Anda kesempatan untuk mengintervensi dan membatalkan peluncuran jika perubahan baru menyebabkan regresi.

Jika panggilan metode ke API mungkin memerlukan waktu lama, API akan menampilkan operasi yang berjalan lama (LRO). Untuk mengetahui informasi selengkapnya tentang LRO, lihat Operasi yang berjalan lama.

OS Config API membuat LRO setiap kali Anda membuat, memperbarui, atau menghapus penetapan kebijakan OS. Setiap LRO menampilkan resource operasi. Resource operasi ini mirip dengan yang berikut ini:

Create request issued for: [my-os-policy-assignment]
Check operation [projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa] for status.

Setiap operasi pembuatan, update, atau penghapusan juga menghasilkan revisi penetapan kebijakan OS yang baru. Untuk melihat revisi penetapan kebijakan OS, lihat Mencantumkan revisi penetapan kebijakan OS.

Anda dapat menggunakan Google Cloud CLI untuk mendapatkan detail peluncuran atau membatalkan peluncuran.

Mendapatkan detail peluncuran

Untuk mendapatkan detail peluncuran, gunakan perintah os-config os-policy-assignments operations describe.

gcloud compute os-config os-policy-assignments operations describe FULLY_QUALIFIED_OPERATION_NAME

Ganti FULLY_QUALIFIED_OPERATION_NAME dengan nama resource yang sepenuhnya memenuhi syarat untuk operasi yang ditampilkan dari operasi pembuatan, pembaruan, atau penghapusan.

Contoh

gcloud compute os-config os-policy-assignments operations describe \
    projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa

Contoh output

done: true
metadata:
  '@type': type.googleapis.com/google.cloud.osconfig.$$api-version$$.OSPolicyAssignmentOperationMetadata
  apiMethod: CREATE
  osPolicyAssignment: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment@cfb78790-41d8-40d1-b8a1-1eaf6011b909
  rolloutStartTime: '2021-04-15T00:53:52.963569Z'
  rolloutState: SUCCEEDED
  rolloutUpdateTime: '2021-04-15T00:53:53.094041Z'
name: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/cfb78790-41d8-40d1-b8a1-1eaf6011b909
response:
  '@type': type.googleapis.com/google.cloud.osconfig.$$api-version$$.OSPolicyAssignment
  baseline: true
  description: My test policy
  instanceFilter:
    inclusionLabels:
    - labels:
        label-key-not-targeting-instances: label-value-not-targeting-instances
  name: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment
  osPolicies:
  - id: q-test-policy
    mode: ENFORCEMENT
    resourceGroups:
    - osFilter:
        osShortName: centos
        osVersion: '7'
      resources:
      - id: add-repo
        repository:
          yum:
            baseUrl: https://packages.cloud.google.com/yum/repos/google-cloud-ops-agent-el7-x86_64-all

Membatalkan peluncuran

Konsol

  1. Di Konsol Google Cloud, buka halaman Kebijakan OS.

    Buka kebijakan OS

  2. Klik tab Penetapan kebijakan OS.

  3. Untuk penetapan kebijakan OS yang ingin Anda batalkan peluncurannya, klik Action () > Cancel launch.

  4. Klik Batalkan peluncuran.

gcloud

Untuk membatalkan peluncuran, gunakan perintah gcloud compute os-config os-policy-assignments operations cancel.

gcloud compute os-config os-policy-assignments operations cancel FULLY_QUALIFIED_OPERATION_NAME

Ganti FULLY_QUALIFIED_OPERATION_NAME dengan nama resource yang sepenuhnya memenuhi syarat untuk operasi yang ditampilkan dari operasi pembuatan, pembaruan, atau penghapusan.

Contoh

gcloud compute os-config os-policy-assignments operations cancel \
    projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa

Jika perintah berhasil, tidak ada output yang ditampilkan.

Apa langkah selanjutnya?