Perkuat keamanan aplikasi Anda dengan Cloud Service Mesh, Config Sync, dan Pengontrol Kebijakan


Tutorial ini menunjukkan cara meningkatkan kualitas postur keamanan aplikasi dan cluster Anda. Bayangkan Anda adalah administrator platform yang organisasinya mengelola aplikasi untuk toko online mereka dengan Cloud Service Mesh, rangkaian alat yang membantu Anda memantau dan mengelola mesh layanan yang andal. Anda bertanggung jawab untuk memastikan bahwa mesh dan aplikasi Anda aman.

Anda dapat mencegah kesalahan konfigurasi dan otomatis memvalidasi Cloud Service Mesh kebijakan dengan menggunakan Pengontrol Kebijakan dan Sinkronisasi Konfigurasi. Pengontrol Kebijakan memungkinkan penerapan kebijakan yang dapat diprogram sepenuhnya untuk ke cluster Anda. Pengontrol Kebijakan juga dilengkapi dengan {i>library<i} {i>default<i} berupa template batasan yang dapat digunakan dengan Paket keamanan Cloud Service Mesh untuk mengaudit kepatuhan praktik terbaik dan kerentanan keamanan mesh Anda. Config Sync terus merekonsiliasi status cluster dengan set pusat file konfigurasi deklaratif Kubernetes. Menggunakan Pengontrol Kebijakan dan Config Sync bersama-sama memungkinkan Anda untuk terus terapkan batasan di konfigurasi kebijakan Cloud Service Mesh Anda.

Diagram berikut menunjukkan ringkasan tentang bagaimana Cloud Service Mesh, Pengontrol Kebijakan dan Config Sync bekerja sama dalam tutorial ini untuk mengelola serta lindungi gateway masuk dan aplikasi contoh Butik Online yang Anda gunakan dalam tutorial ini:

Diagram yang menunjukkan arsitektur yang Anda buat untuk tutorial ini

Tujuan

  • Membuat cluster Google Kubernetes Engine (GKE) dan mendaftarkan cluster tersebut ke fleet.
  • Menginstal Pengontrol Kebijakan, Config Sync, dan Cloud Service Mesh pada cluster.
  • Konfigurasikan Config Sync ke menyinkronkan beberapa repositori
  • Terapkan praktik terbaik untuk men-deploy konfigurasi, aplikasi, dan resource Istio dengan Sinkronisasi Konfigurasi.
  • Deploy konfigurasi cluster, aplikasi contoh Butik Online, dan traffic masuk dengan Config Sync.
  • Manfaatkan Paket kebijakan Cloud Service Mesh Pengontrol Kebijakan untuk menerapkan praktik terbaik keamanan berikut:
    • Pastikan semua workload di mesh memiliki injeksi file bantuan otomatis.
    • Enkripsi semua traffic di mesh.
    • Pastikan semua workload di mesh memiliki kontrol akses terperinci.

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

  • GKE.
  • GKE Enterprise. The billing for GKE Enterprise includes billing for the Cloud Service Mesh, Config Sync, and Policy Controller.

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Sebelum memulai

  1. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  2. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

Menyiapkan lingkungan Anda

Di bagian ini, Anda akan menyiapkan lingkungan sehingga Anda dapat menginstal Cloud Service Mesh, Pengontrol Kebijakan, dan Config Sync:

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

  2. Upgrade Google Cloud CLI ke versi terbaru:

    gcloud components update
    
  3. Untuk menyimpan file yang Anda buat dalam tutorial ini, buat direktori:

    mkdir ~/asm-acm-tutorial-dir
    
  4. Untuk menyederhanakan sisa tutorial, buat lingkungan berikut variabel:

    PROJECT_ID=PROJECT_ID
    gcloud config set project $PROJECT_ID
    CLUSTER=asm-acm-tutorial
    CLUSTER_ZONE=us-east4-a
    MEMBERSHIP=asm-acm-tutorial
    PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} --format='get(projectNumber)')
    

    Ganti PROJECT_ID dengan project ID yang yang ingin Anda gunakan untuk tutorial ini.

    Jika Anda diminta untuk memberikan otorisasi pada Cloud Shell, klik Authorize untuk untuk menyelesaikan operasi.

  5. Aktifkan API yang Anda perlukan untuk tutorial ini:

    gcloud

    gcloud services enable \
        mesh.googleapis.com \
        anthos.googleapis.com
    

    Config Connector

    Tutorial ini mencakup Config Connector Google Cloud Platform. Anda dapat menggunakan resource ini untuk menyelesaikan tugas yang sama dengan yang diselesaikan di tab gcloud. Untuk memanfaatkan sumber daya ini, menginstal Config Connector dan menerapkan sumber daya dengan cara yang paling sesuai untuk lingkungan Anda.

    Gunakan manifes Services berikut:

    apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
    kind: Service
    metadata:
      annotations:
        cnrm.cloud.google.com/deletion-policy: "abandon"
        cnrm.cloud.google.com/disable-dependent-services: "false"
      name: mesh.googleapis.com
    spec:
      resourceID: mesh.googleapis.com
      projectRef:
        external: PROJECT_ID
    ---
    apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
    kind: Service
    metadata:
      annotations:
        cnrm.cloud.google.com/deletion-policy: "abandon"
        cnrm.cloud.google.com/disable-dependent-services: "false"
      name: anthos.googleapis.com
    spec:
      resourceID: anthos.googleapis.com
      projectRef:
        external: PROJECT_ID
    

    Operasi ini bisa butuh waktu lebih dari satu menit hingga selesai.

Menyiapkan cluster GKE

Di bagian ini, Anda akan membuat cluster GKE lalu mendaftarkan ke suatu fleet. Armada adalah konsep Google Cloud untuk mengatur cluster dan resource lainnya secara logis, memungkinkan Anda menggunakan dan mengelola kapabilitas multi-cluster serta menerapkan kebijakan di seluruh sistem Anda.

Cluster yang Anda buat di bagian ini adalah cluster yang diinstal Cloud Service Mesh, Pengontrol Kebijakan, dan Config Sync aktif. Ini juga merupakan cluster tempat Anda men-deploy aplikasi contoh Online Boutique.

Untuk menyiapkan cluster Anda, selesaikan langkah-langkah berikut:

  1. Buat cluster GKE:

    gcloud

    gcloud container clusters create ${CLUSTER} \
        --zone ${CLUSTER_ZONE} \
        --machine-type=e2-standard-4 \
        --num-nodes 4 \
        --workload-pool ${PROJECT_ID}.svc.id.goog \
        --labels mesh_id=proj-${PROJECT_NUMBER}
    

    Config Connector

    Gunakan manifes ContainerCluster dan ContainerNodePool berikut:

    apiVersion: container.cnrm.cloud.google.com/v1beta1
    kind: ContainerNodePool
    metadata:
      annotations:
        cnrm.cloud.google.com/project-id: PROJECT_ID
      name: asm-acm-tutorial
    spec:
      clusterRef:
        name: asm-acm-tutorial
      location: us-east4-a
      nodeConfig:
        machineType: e2-standard-4
      nodeCount: 4
    ---
    apiVersion: container.cnrm.cloud.google.com/v1beta1
    kind: ContainerCluster
    metadata:
      annotations:
        cnrm.cloud.google.com/project-id: PROJECT_ID
        cnrm.cloud.google.com/remove-default-node-pool: "true"
      labels:
        mesh_id: proj-PROJECT_NUMBER
      name: asm-acm-tutorial
    spec:
      location: us-east4-a
      initialNodeCount: 1
      workloadIdentityConfig:
        workloadPool: PROJECT_ID.svc.id.goog
    

    Ganti PROJECT_NUMBER dengan nilai lingkungan PROJECT_NUMBER variabel yang diambil sebelumnya.

    Operasi ini bisa butuh waktu lebih dari lima menit hingga selesai.

  2. Untuk memastikan keberhasilan pembuatan cluster GKE, jelaskan status:

    gcloud container clusters list \
        --zone ${CLUSTER_ZONE} \
        --project ${PROJECT_ID}
    

    Outputnya mirip dengan hal berikut ini:

    NAME                LOCATION      MASTER_VERSION   MASTER_IP      MACHINE_TYPE   NODE_VERSION     NUM_NODES  STATUS
    asm-acm-tutorial    us-east4-a    1.23.12-gke.100  35.186.179.30  e2-standard-4  1.23.12-gke.100  3          RUNNING
    
  3. Hubungkan ke cluster GKE

    gcloud container clusters get-credentials ${CLUSTER} \
        --zone ${CLUSTER_ZONE} \
        --project ${PROJECT_ID}
    
  4. Daftarkan cluster Anda ke fleet:

    gcloud

    gcloud container fleet memberships register ${MEMBERSHIP} \
        --project ${PROJECT_ID} \
        --gke-cluster ${CLUSTER_ZONE}/${CLUSTER} \
        --enable-workload-identity
    

    Outputnya mirip dengan hal berikut ini:

    kubeconfig entry generated for asm-acm-tutorial.
    Waiting for membership to be created...done.
    Created a new membership [projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial] for the cluster [asm-acm-tutorial]
    Generating the Connect Agent manifest...
    Deploying the Connect Agent on cluster [asm-acm-tutorial] in namespace [gke-connect]...
    Deployed the Connect Agent on cluster [asm-acm-tutorial] in namespace [gke-connect].
    Finished registering the cluster [asm-acm-tutorial] with the Fleet.
    

    Config Connector

    Gunakan manifes GKEHubMembership berikut:

    apiVersion: gkehub.cnrm.cloud.google.com/v1beta1
    kind: GKEHubMembership
    metadata:
      annotations:
        cnrm.cloud.google.com/project-id: PROJECT_ID
      name: asm-acm-tutorial
    spec:
      location: global
      authority:
        issuer: https://container.googleapis.com/v1/projects/PROJECT_ID/locations/us-east4-a/clusters/asm-acm-tutorial
      endpoint:
        gkeCluster:
          resourceRef:
            name: asm-acm-tutorial
    
  5. Untuk memastikan pendaftaran cluster GKE berhasil, mendeskripsikan statusnya:

    gcloud container fleet memberships list
    

    Outputnya mirip dengan hal berikut ini:

    NAME              EXTERNAL_ID                           LOCATION
    asm-acm-tutorial  0e12258c-8831-4d81-b5c0-5e7099a468cc  global
    

Mempelajari repositori

Di bagian penginstalan berikut, Anda akan menerapkan file acm-config.yaml manifes. Manifes ini mengonfigurasi cluster Anda untuk disinkronkan dari Folder asm-acm-tutorial dari repositori sampel. Folder ini berisi semua file konfigurasi yang Anda butuhkan untuk menyelesaikan tutorial selanjutnya.

Untuk menyederhanakan tutorial ini, Anda menggunakan perintah sed untuk memperbarui acm-config.yaml. Dengan file acm-config.yaml, Config Sync men-deploy manifes yang diperlukan untuk setiap langkah tutorial ini. Memperbarui satu file membantu Anda fokus pada konsep dan alur pengamanan cluster, mesh, dan aplikasi Anda tanpa berulang kali memanipulasi file dan berulang kali menjalankan perintah git.

Untuk memanfaatkan kemampuan Config Sync dalam menyinkronkan beberapa repositori, Anda dapat menggunakan referensi berikut:

  • root-sync, sebagai RootSync yang berisi semua konfigurasi di seluruh cluster Anda termasuk RepoSyncs, Constraints, ClusterRole, RoleBindings, dan resource yang disertakan dalam beberapa sistem namespace seperti istio-system.
  • ingress-gateway, sebagai RepoSync pertama, berisi semua resource yang diperlukan untuk men-deploy traffic masuk dan mengamankannya secara progresif sepanjang tutorial ini.
  • online-boutique, sebagai RepoSync kedua, berisi semua resource yang diperlukan untuk men-deploy Aplikasi Butik Online dan mengamankannya secara bertahap sepanjang tutorial ini.

Instal Pengontrol Kebijakan, Config Sync, dan Cloud Service Mesh terkelola

Setelah membuat dan mendaftarkan cluster, Anda dapat menginstal Config Sync, Pengontrol Kebijakan, dan Cloud Service Mesh di cluster Anda dan konfigurasikan cluster Anda agar disinkronkan dari konfigurasi RootSync default:

  1. Mengaktifkan operator ConfigManagement, yang mengelola Config Sync dan Pengontrol Kebijakan:

    gcloud

    gcloud beta container fleet config-management enable
    

    Config Connector

    Gunakan manifes GKEHubFeature berikut:

    apiVersion: gkehub.cnrm.cloud.google.com/v1beta1
    kind: GKEHubFeature
    metadata:
      name: configmanagement
    spec:
      projectRef:
        external: PROJECT_ID
      location: global
      resourceID: configmanagement
    
  2. Aktifkan Cloud Service Mesh di fleet Anda.

    gcloud

    gcloud container fleet mesh enable
    

    Config Connector

    Gunakan manifes GKEHubFeature berikut:

    apiVersion: gkehub.cnrm.cloud.google.com/v1beta1
    kind: GKEHubFeature
    metadata:
      name: servicemesh
    spec:
      projectRef:
        external: PROJECT_ID
      location: global
      resourceID: servicemesh
    
  3. Aktifkan pengelolaan otomatis Cloud Service Mesh untuk memungkinkan Google menerapkan konfigurasi Cloud Service Mesh terkelola yang direkomendasikan:

    gcloud

    gcloud container fleet mesh update \
        --management automatic \
        --memberships ${MEMBERSHIP}
    

    Config Connector

    Gunakan manifes GKEHubFeatureMembership berikut:

    apiVersion: gkehub.cnrm.cloud.google.com/v1beta1
    kind: GKEHubFeatureMembership
    metadata:
      name: servicemesh-membership
    spec:
      projectRef:
        external: PROJECT_ID
      location: global
      membershipRef:
        name: asm-acm-tutorial
      featureRef:
        name: servicemesh
      mesh:
        management: MANAGEMENT_AUTOMATIC
    
  4. Aktifkan Config Sync dan Pengontrol Kebijakan:

    gcloud

    Simpan manifes berikut sebagai acm-config.yaml dalam direktori ~/asm-acm-tutorial-dir:

    applySpecVersion: 1
    spec:
      configSync:
        enabled: true
        policyDir: asm-acm-tutorial/root-sync/init
        secretType: none
        sourceFormat: unstructured
        syncRepo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
        syncBranch: main
      policyController:
        enabled: true
        referentialRulesEnabled: true
        templateLibraryInstalled: true
    

    Untuk mempelajari kolom konfigurasi Google Cloud CLI lebih lanjut, lihat gcloud apply spec fields.

    Terapkan file tersebut:

    gcloud beta container fleet config-management apply \
        --membership ${MEMBERSHIP} \
        --config ~/asm-acm-tutorial-dir/acm-config.yaml
    

    Config Connector

    Gunakan manifes GKEHubFeatureMembership berikut:

    apiVersion: gkehub.cnrm.cloud.google.com/v1beta1
    kind: GKEHubFeatureMembership
    metadata:
      name: configmanagement-membership
    spec:
      projectRef:
        external: PROJECT_ID
      location: global
      membershipRef:
        name: asm-acm-tutorial
      featureRef:
        name: configmanagement
      configmanagement:
        configSync:
          sourceFormat: unstructured
          git:
            policyDir: asm-acm-tutorial/root-sync/init
            secretType: none
            syncBranch: main
            syncRepo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
        policyController:
          enabled: true
          referentialRulesEnabled: true
          templateLibraryInstalled: true
    

    Pengontrol Kebijakan dan Config Sync diinstal di cluster Anda. Berikutnya Config Sync mulai menyinkronkan semua konfigurasi RootSync default ke cluster Anda. Konfigurasi ini menginstal dan mengonfigurasi kunci berikut komponen:

    • Objek RepoSync yang mengonfigurasi aplikasi Butik Online dan gateway masuk disinkronkan:

      apiVersion: configsync.gke.io/v1beta1
      kind: RepoSync
      metadata:
        name: repo-sync
      spec:
        override:
          enableShellInRendering: true
        sourceFormat: unstructured
        git:
          repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
          revision: HEAD
          branch: main
          dir: asm-acm-tutorial/online-boutique/init
          auth: none
      apiVersion: configsync.gke.io/v1beta1
      kind: RepoSync
      metadata:
        name: repo-sync
      spec:
        override:
          enableShellInRendering: true
        sourceFormat: unstructured
        git:
          repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
          revision: HEAD
          branch: main
          dir: asm-acm-tutorial/ingress-gateway/init
          auth: none
    • Karena Rekonsiliasi RepoSync memerlukan izin tambahan untuk membuat resource Istio, ClusterRole, dan dua objek RoleBinding untuk memberikan izin ini juga akan diterapkan ke cluster Anda:

      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        labels:
          rbac.authorization.k8s.io/aggregate-to-edit: "true"
        name: custom:aggregate-to-edit:istio
      rules:
      - apiGroups:
        - "networking.istio.io"
        - "security.istio.io"
        resources:
        - "virtualservices"
        - "authorizationpolicies"
        - "gateways"
        verbs:
        - "*"
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        name: repo-sync
      subjects:
      - kind: ServiceAccount
        name: ns-reconciler-onlineboutique
        namespace: config-management-system
      roleRef:
        kind: ClusterRole
        name: edit
        apiGroup: rbac.authorization.k8s.io
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        name: repo-sync
      subjects:
      - kind: ServiceAccount
        name: ns-reconciler-asm-ingress
        namespace: config-management-system
      roleRef:
        kind: ClusterRole
        name: edit
        apiGroup: rbac.authorization.k8s.io
  5. Untuk memastikan keberhasilan instalasi Pengontrol Kebijakan dan Config Sync, periksa statusnya:

    gcloud beta container fleet config-management status
    

    Outputnya mirip dengan hal berikut ini:

    Name: asm-acm-tutorial
    Status: SYNCED
    Last_Synced_Token: 4b3384d
    Sync_Branch: main
    Last_Synced_Time: 2022-05-04T21:32:58Z
    Policy_Controller: INSTALLED
    Hierarchy_Controller: PENDING
    

    Jika Anda melihat PENDING atau NOT_INSTALLED di Status atau Policy_Controller baris, tunggu beberapa menit dan jalankan gcloud beta container fleet config-management status lagi.

  6. Untuk memastikan keberhasilan penginstalan Cloud Service Mesh, jelaskan statusnya:

    gcloud container fleet mesh describe
    

    Outputnya mirip dengan hal berikut ini:

    createTime: '2022-09-13T23:12:56.477042921Z'
    membershipSpecs:
      projects/PROJECT_NUMBER/locations/global/memberships/asm-acm-tutorial:
        mesh:
          management: MANAGEMENT_AUTOMATIC
    membershipStates:
      projects/PROJECT_NUMBER/locations/global/memberships/asm-acm-tutorial:
        servicemesh:
          controlPlaneManagement:
            details:
            - code: REVISION_READY
              details: 'Ready: asm-managed'
            state: ACTIVE
          dataPlaneManagement:
            details:
            - code: OK
              details: Service is running.
            state: ACTIVE
        state:
          code: OK
          description: |-
            Revision(s) ready for use: asm-managed.
            All Canonical Services have been reconciled successfully.
          updateTime: '2022-09-14T00:19:10.571552206Z'
    name: projects/PROJECT_ID/locations/global/features/servicemesh
    resourceState:
      state: ACTIVE
    spec: {}
    state:
      state: {}
    updateTime: '2022-09-14T00:19:14.135113118Z'
    

    Jika Anda melihat state.code: ERROR dan bukan state.code: OK, tunggu beberapa menit lalu jalankan gcloud container fleet mesh describe lagi. Sebelum melanjutkan ke tutorial, Anda perlu memastikan bahwa kolom servicemesh.controlPlaneManagement.details.code memiliki nilai REVISION_READY.

Men-deploy gateway masuk dan aplikasi contoh

Di bagian ini, Anda akan men-deploy Aplikasi contoh Butik Online dan gateway masuk untuk mengelola traffic masuk.

  1. Men-deploy aplikasi contoh Online Boutique dan gateway masuk.

    Perintah berikut menggunakan sed untuk mengupdate manifes acm-config.yaml agar get Config Sync yang men-deploy resource yang Anda butuhkan untuk men-deploy ingress gateway dan aplikasi contoh.

    sed -i "s,root-sync/init,root-sync/deployments,g" ~/asm-acm-tutorial-dir/acm-config.yaml
    gcloud beta container fleet config-management apply \
        --membership ${MEMBERSHIP} \
        --config ~/asm-acm-tutorial-dir/acm-config.yaml
    

    Perhatikan bahwa langkah ini dapat memerlukan waktu beberapa menit untuk diselesaikan.

  2. Lihat status Config Sync untuk RootSync dan kedua RepoSyncs:

    gcloud alpha anthos config sync repo describe
    

    Outputnya mirip dengan:

    getting 3 RepoSync and RootSync from projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial
    [
      {
        "clusters": [
          "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
        ],
        "commit": "95a30c052566357afb9db3d7f6153d9c0f219c03",
        "errors": [],
        "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/root-sync/deployments@main",
        "status": "SYNCED"
      },
      {
        "clusters": [
          "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
        ],
        "commit": "95a30c052566357afb9db3d7f6153d9c0f219c03",
        "errors": [],
        "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/ingress-gateway/deployments@main",
        "status": "SYNCED"
      },
      {
        "clusters": [
          "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
        ],
        "commit": "95a30c052566357afb9db3d7f6153d9c0f219c03",
        "errors": [],
        "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/online-boutique/deployments@main",
        "status": "SYNCED"
      }
    ]
    

    Jika Anda melihat status: RECONCILING dan bukan status: SYNCED, tunggu beberapa menit lalu jalankan gcloud alpha anthos config sync repo describe lagi.

    Untuk melihat informasi dari satu repositori saja, Anda dapat menggunakan --sync-name dan --sync-namespace. Untuk melihat resource yang dikelola secara mendetail, tambahkan flag --managed-resources. Untuk informasi selengkapnya, lihat Lihat status Config Sync di beberapa cluster.

  3. Tunggu hingga alamat IP publik gateway masuk tersedia:

    until kubectl -n asm-ingress get svc asm-ingressgateway -o jsonpath='{.status.loadBalancer}' | grep "ingress"; do : ; done
    
  4. Dapatkan alamat IP publik gateway masuk:

    EXTERNAL_IP=$(kubectl get svc asm-ingressgateway -n asm-ingress -o jsonpath="{.status.loadBalancer.ingress[*].ip}")
    
  5. Kunjungi alamat IP dari browser Anda untuk memverifikasi bahwa aplikasi Online Boutique telah berhasil di-deploy:

    echo http://${EXTERNAL_IP}
    

Terapkan kebijakan untuk mengamankan mesh Anda

Di bagian berikut ini, Anda akan memanfaatkan Pengontrol Kebijakan untuk menegakkan kebijakan dari Paket kebijakan Cloud Service Mesh dengan membuat batasan.

Terapkan injeksi proxy file bantuan

Di bagian ini, Anda akan menerapkan kebijakan untuk memastikan semua workload di mesh memiliki injeksi file bantuan otomatis mengaktifkan pembuatan versi.

  1. Untuk menerapkan injeksi proxy file bantuan, terapkan batasan.

    Perintah berikut menggunakan sed untuk mengupdate manifes acm-config.yaml agar mendapatkan Config Sync yang men-deploy resource terkait.

    sed -i "s,root-sync/deployments,root-sync/enforce-sidecar-injection,g" ~/asm-acm-tutorial-dir/acm-config.yaml
    gcloud beta container fleet config-management apply \
        --membership ${MEMBERSHIP} \
        --config ~/asm-acm-tutorial-dir/acm-config.yaml
    

    Perintah sebelumnya men-deploy resource berikut:

    • K8sRequiredLabels Constraint yang memerlukan Namespace di mesh untuk menampung Label injeksi proxy proxy Cloud Service Mesh:

      apiVersion: constraints.gatekeeper.sh/v1beta1
      kind: K8sRequiredLabels
      metadata:
        name: namespace-sidecar-injection-label
      spec:
        enforcementAction: deny
        match:
          kinds:
          - apiGroups:
            - ""
            kinds:
            - Namespace
          excludedNamespaces:
          - config-management-monitoring
          - config-management-system
          - default
          - gatekeeper-system
          - gke-connect
          - istio-system
          - kube-node-lease
          - kube-public
          - kube-system
          - resource-group-system
        parameters:
          labels:
          - allowedRegex: enabled
            key: istio-injection
    • AsmSidecarInjection Constraint yang melarang Pod apa pun dalam mesh menghindari Istio injeksi file bantuan proxy:

      apiVersion: constraints.gatekeeper.sh/v1beta1
      kind: AsmSidecarInjection
      metadata:
        name: pod-sidecar-injection-annotation
      spec:
        enforcementAction: deny
        match:
          kinds:
          - apiGroups:
            - ""
            kinds:
            - Pod
          excludedNamespaces:
          - kube-system
        parameters:
          strictnessLevel: High
  2. Lihat status Config Sync untuk RootSync:

    gcloud alpha anthos config sync repo describe \
        --sync-name root-sync \
        --sync-namespace config-management-system
    

    Outputnya mirip dengan:

    getting 1 RepoSync and RootSync from projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial
    [
      {
        "clusters": [
          "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
        ],
        "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
        "errors": [],
        "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/root-sync/enforce-sidecar-injection@main",
        "status": "SYNCED"
      }
    ]
    

    Jika Anda melihat status: RECONCILING dan bukan status: SYNCED, tunggu beberapa menit lalu jalankan gcloud alpha anthos config sync repo describe lagi.

  3. Pastikan bahwa Constraints dibuat:

    kubectl get constraints
    

    Pengontrol Kebijakan memerlukan waktu beberapa menit untuk mengevaluasi batasan data. Jika Anda tidak melihat nilai dalam kolom TOTAL-VIOLATIONS, tunggu terlebih dahulu dan jalankan kubectl get constraints lagi.

    Outputnya mirip dengan:

    NAME                                                                                       ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
    podsidecarinjectionannotation.constraints.gatekeeper.sh/pod-sidecar-injection-annotation   deny                 0
    
    NAME                                                                            ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
    k8srequiredlabels.constraints.gatekeeper.sh/namespace-sidecar-injection-label   deny                 0
    

    Karena kita menyiapkan Namespaces dan Pods dengan benar, ada 0 TOTAL-VIOLATIONS untuk Constraints ini.

  4. Untuk melihat fungsi Constraints ini, coba buat Namespace di cluster Anda tanpa label atau annotation:

    kubectl create namespace test
    

    Outputnya serupa dengan error berikut:

    Error from server (Forbidden): admission webhook "validation.gatekeeper.sh" denied the request: [namespace-sidecar-injection-label] you must provide labels: {"istio-injection"}
    

Terapkan enkripsi traffic

Di bagian ini, Anda akan menerapkan kebijakan untuk memastikan semua traffic di mesh dienkripsi.

  1. Untuk menerapkan enkripsi traffic, terapkan batasan.

    Perintah berikut menggunakan sed untuk mengupdate manifes acm-config.yaml agar mendapatkan Config Sync yang men-deploy resource terkait.

    sed -i "s,root-sync/enforce-sidecar-injection,root-sync/enforce-strict-mtls,g" ~/asm-acm-tutorial-dir/acm-config.yaml
    gcloud beta container fleet config-management apply \
        --membership ${MEMBERSHIP} \
        --config ~/asm-acm-tutorial-dir/acm-config.yaml
    

    Perintah sebelumnya men-deploy resource berikut:

    • AsmPeerAuthnMeshStrictMtls Constraint yang menerapkan PeerAuthentication mTLS tingkat mesh di Namespace istio-system:

      apiVersion: constraints.gatekeeper.sh/v1beta1
      kind: AsmPeerAuthnMeshStrictMtls
      metadata:
        name: mesh-level-strict-mtls
      spec:
        enforcementAction: deny
        parameters:
          rootNamespace: istio-system
          strictnessLevel: High
    • Batasan referensial Config dalam namespace gatekeeper-system. Batasan referensial ini memungkinkan AsmPeerAuthnMeshStrictMtls Constraint mereferensikan dalam definisinya (misalnya, menelusuri setiap PeerAuthentication dalam istio-system Namespace):

      apiVersion: config.gatekeeper.sh/v1alpha1
      kind: Config
      metadata:
        name: config
      spec:
        sync:
          syncOnly:
            - group: ""
              version: "v1"
              kind: "Namespace"
            - group: "security.istio.io"
              version: "v1beta1"
              kind: "PeerAuthentication"
            - group: "security.istio.io"
              version: "v1beta1"
              kind: "AuthorizationPolicy"
    • DestinationRuleTLSEnabled Constraint yang melarang penonaktifan TLS untuk semua subset host dan host di Istio DestinationRules:

      apiVersion: constraints.gatekeeper.sh/v1beta1
      kind: DestinationRuleTLSEnabled
      metadata:
        name: destination-rule-tls-enabled
      spec:
        enforcementAction: deny
        match:
          kinds:
          - apiGroups:
            - networking.istio.io
            kinds:
            - DestinationRule
    • AsmPeerAuthnStrictMtls Constraint yang menerapkan bahwa semua PeerAuthentications tidak dapat ditimpa STRICT mTLS:

      apiVersion: constraints.gatekeeper.sh/v1beta1
      kind: AsmPeerAuthnStrictMtls
      metadata:
        name: peerauthentication-strict-mtls
      spec:
        enforcementAction: deny
        match:
          kinds:
          - apiGroups:
            - security.istio.io
            kinds:
            - PeerAuthentication
        parameters:
          strictnessLevel: High
  2. Lihat status Config Sync untuk RootSync:

    gcloud alpha anthos config sync repo describe \
        --sync-name root-sync \
        --sync-namespace config-management-system
    

    Outputnya mirip dengan:

    getting 1 RepoSync and RootSync from projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial
    [
      {
        "clusters": [
          "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
        ],
        "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
        "errors": [],
        "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/root-sync/enforce-strict-mtls@main",
        "status": "SYNCED"
      }
    ]
    

    Jika Anda melihat status: RECONCILING dan bukan status: SYNCED, tunggu beberapa menit lalu jalankan gcloud alpha anthos config sync repo describe lagi.

  3. Jalankan perintah berikut untuk mendapatkan informasi selengkapnya tentang Pelanggaran PeerAuthentication:

    kubectl get asmpeerauthnmeshstrictmtls.constraints.gatekeeper.sh/mesh-level-strict-mtls -ojsonpath='{.status.violations}'  | jq
    

    Outputnya mirip dengan:

    [
      {
        "enforcementAction": "deny",
        "group": "constraints.gatekeeper.sh",
        "kind": "AsmPeerAuthnMeshStrictMtls",
        "message": "Root namespace <istio-system> does not have a strict mTLS PeerAuthentication",
        "name": "mesh-level-strict-mtls",
        "version": "v1beta1"
      }
    ]
    
  4. Perbaiki masalah dengan men-deploy PeerAuthentication di istio-system. Untuk mencegah semua layanan Anda di mesh agar tidak menerima traffic teks biasa, tetapkan kebijakan PeerAuthentication seluruh mesh dengan mTLS mode yang disetel ke STRICT. Saat Anda men-deploy kebijakan, bidang kontrol akan otomatis menyediakan sertifikat TLS sehingga beban kerja dapat saling mengotentikasi satu sama lain.

    Perintah berikut menggunakan sed untuk mengupdate manifes acm-config.yaml agar mendapatkan Config Sync yang men-deploy resource terkait.

    sed -i "s,root-sync/enforce-strict-mtls,root-sync/fix-strict-mtls,g" ~/asm-acm-tutorial-dir/acm-config.yaml
    gcloud beta container fleet config-management apply \
        --membership ${MEMBERSHIP} \
        --config ~/asm-acm-tutorial-dir/acm-config.yaml
    

    Perintah sebelumnya menerapkan STRICT mTLS PeerAuthentication berikut dalam istio-system namespace. Tindakan ini akan menerapkan STRICT mTLS ke seluruh mesh:

    apiVersion: security.istio.io/v1beta1
    kind: PeerAuthentication
    metadata:
      name: default
    spec:
      mtls:
        mode: STRICT
  5. Lihat status Config Sync untuk RootSync:

    gcloud alpha anthos config sync repo describe \
        --sync-name root-sync \
        --sync-namespace config-management-system
    

    Outputnya mirip dengan:

    getting 1 RepoSync and RootSync from projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial
    [
      {
        "clusters": [
          "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
        ],
        "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
        "errors": [],
        "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/root-sync/fix-strict-mtls@main",
        "status": "SYNCED"
      }
    ]
    

    Jika Anda melihat status: RECONCILING dan bukan status: SYNCED, tunggu beberapa menit lalu jalankan gcloud alpha anthos config sync repo describe lagi.

  6. Pastikan bahwa Constraints dibuat:

    kubectl get constraints
    

    Perlu diketahui bahwa proses ini memerlukan waktu beberapa menit agar Pengontrol Kebijakan mengevaluasi Constraints ini. Tunggu dan jalankan lagi perintah kubectl get constraints ini hingga Anda mendapatkan nilai di bawah kolom TOTAL-VIOLATIONS untuk setiap baris.

    Outputnya mirip dengan:

    NAME                                                                            ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
    k8srequiredlabels.constraints.gatekeeper.sh/namespace-sidecar-injection-label   deny                 0
    NAME                                                                          ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
    asmpeerauthnmeshstrictmtls.constraints.gatekeeper.sh/mesh-level-strict-mtls   deny                 0
    NAME                                                                               ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
    destinationruletlsenabled.constraints.gatekeeper.sh/destination-rule-tls-enabled   deny                 0
    NAME                                                                              ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
    asmpeerauthnstrictmtls.constraints.gatekeeper.sh/peerauthentication-strict-mtls   deny                 0
    NAME                                                                             ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
    asmsidecarinjection.constraints.gatekeeper.sh/pod-sidecar-injection-annotation   deny                 0
    

Menerapkan kontrol akses terperinci

Di bagian ini, Anda akan menerapkan kebijakan untuk memastikan semua workload di mesh memiliki kontrol akses terperinci.

  1. Untuk menerapkan kontrol akses terperinci, terapkan batasan.

    Perintah berikut menggunakan sed untuk mengupdate manifes acm-config.yaml agar mendapatkan Config Sync yang men-deploy resource terkait.

    sed -i "s,root-sync/fix-strict-mtls,root-sync/enforce-authorization-policies,g" ~/asm-acm-tutorial-dir/acm-config.yaml
    gcloud beta container fleet config-management apply \
        --membership ${MEMBERSHIP} \
        --config ~/asm-acm-tutorial-dir/acm-config.yaml
    

    Perintah sebelumnya men-deploy resource berikut:

    • AsmAuthzPolicyDefaultDeny Constraint yang menerapkan menolak AuthorizationPolicy default tingkat mesh di namespace istio-system:

      apiVersion: constraints.gatekeeper.sh/v1beta1
      kind: AsmAuthzPolicyDefaultDeny
      metadata:
        name: default-deny-authorization-policies
      spec:
        enforcementAction: deny
        parameters:
          rootNamespace: istio-system
          strictnessLevel: High
    • AsmAuthzPolicyEnforceSourcePrincipals Constraint yang memberlakukan bahwa AuthorizationPolicies menentukan akun utama sumber yang terperinci (selain "*"). Hanya gateway masuk dalam namespace asm-ingress yang pengecualian terhadap aturan ini agar dapat menerima traffic dari pengguna akhir dan mengalihkan traffic ke aplikasi frontend Online Boutique.

      apiVersion: constraints.gatekeeper.sh/v1beta1
      kind: AsmAuthzPolicyEnforceSourcePrincipals
      metadata:
        name: authz-source-principals-not-all
      spec:
        enforcementAction: deny
        match:
          kinds:
          - apiGroups:
            - security.istio.io
            kinds:
            - AuthorizationPolicy
          excludedNamespaces:
            - asm-ingress
  2. Lihat status Config Sync untuk RootSync:

    gcloud alpha anthos config sync repo describe \
        --sync-name root-sync \
        --sync-namespace config-management-system
    

    Outputnya mirip dengan:

    getting 1 RepoSync and RootSync from projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial
    [
      {
        "clusters": [
          "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
        ],
        "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
        "errors": [],
        "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/root-sync/enforce-authorization-policies@main",
        "status": "SYNCED"
      }
    ]
    

    Jika Anda melihat status: RECONCILING dan bukan status: SYNCED, tunggu beberapa menit lalu jalankan gcloud alpha anthos config sync repo describe lagi.

  3. Jalankan perintah berikut untuk mendapatkan informasi selengkapnya tentang pelanggaran terkait:

    kubectl get asmauthzpolicydefaultdeny.constraints.gatekeeper.sh/default-deny-authorization-policies -ojsonpath='{.status.violations}'  | jq
    

    Outputnya mirip dengan:

    [
      {
        "enforcementAction": "deny",
        "group": "constraints.gatekeeper.sh",
        "kind": "AsmAuthzPolicyDefaultDeny",
        "message": "Root namespace <istio-system> does not have a default deny AuthorizationPolicy",
        "name": "default-deny-authorization-policies",
        "version": "v1beta1"
      }
    ]
    
  4. Perbaiki masalah dengan men-deploy AuthorizationPolicy di istio-system namespace.

    Perintah berikut menggunakan sed untuk mengupdate manifes acm-config.yaml agar mendapatkan Config Sync yang men-deploy resource terkait.

    sed -i "s,root-sync/enforce-authorization-policies,root-sync/fix-default-deny-authorization-policy,g" ~/asm-acm-tutorial-dir/acm-config.yaml
    gcloud beta container fleet config-management apply \
        --membership ${MEMBERSHIP} \
        --config ~/asm-acm-tutorial-dir/acm-config.yaml
    

    Perintah sebelumnya men-deploy AuthorizationPolicy tolak semua berikut di istio-system ruang nama:

    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
      name: deny-all
    spec:
      {}
  5. Lihat status Config Sync untuk RootSync:

    gcloud alpha anthos config sync repo describe \
        --sync-name root-sync \
        --sync-namespace config-management-system
    

    Outputnya mirip dengan:

    getting 1 RepoSync and RootSync from projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial
    [
      {
        "clusters": [
          "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
        ],
        "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
        "errors": [],
        "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/root-sync/fix-default-deny-authorization-policy@main",
        "status": "SYNCED"
      }
    ]
    

    Jika Anda melihat status: RECONCILING dan bukan status: SYNCED, tunggu beberapa menit lalu jalankan gcloud alpha anthos config sync repo describe lagi.

  6. Pastikan bahwa Constraints dibuat:

    kubectl get constraints
    

    Perlu diketahui bahwa proses ini memerlukan waktu beberapa menit agar Pengontrol Kebijakan mengevaluasi Constraints ini. Tunggu dan jalankan lagi perintah kubectl get constraints ini hingga Anda mendapatkan nilai di bawah kolom TOTAL-VIOLATIONS untuk setiap baris.

    Outputnya mirip dengan:

    NAME                                                                             ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
    asmsidecarinjection.constraints.gatekeeper.sh/pod-sidecar-injection-annotation   deny                 0
    NAME                                                                            ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
    k8srequiredlabels.constraints.gatekeeper.sh/namespace-sidecar-injection-label   deny                 0
    NAME                                                                                      ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
    asmauthzpolicydefaultdeny.constraints.gatekeeper.sh/default-deny-authorization-policies   deny                 0
    NAME                                                                          ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
    asmpeerauthnmeshstrictmtls.constraints.gatekeeper.sh/mesh-level-strict-mtls   deny                 0
    NAME                                                                               ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
    destinationruletlsenabled.constraints.gatekeeper.sh/destination-rule-tls-enabled   deny                 0
    NAME                                                                              ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
    asmpeerauthnstrictmtls.constraints.gatekeeper.sh/peerauthentication-strict-mtls   deny                 0
    NAME                                                                                              ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
    asmauthzpolicyenforcesourceprincipals.constraints.gatekeeper.sh/authz-source-principals-not-all   deny                 0
    
  7. Kunjungi aplikasi Online Boutique dari browser Anda:

    echo http://${EXTERNAL_IP}
    

    Anda akan menerima error: RBAC: access denied yang mengonfirmasi bahwa tolak default AuthorizationPolicy diterapkan ke seluruh mesh.

  8. Perbaiki masalah ini dengan men-deploy AuthorizationPolicies yang lebih terperinci di namespace asm-ingress dan onlineboutique.

    Perintah berikut menggunakan sed untuk mengupdate manifes acm-config.yaml agar mendapatkan Config Sync yang men-deploy resource terkait.

    sed -i "s,root-sync/fix-default-deny-authorization-policy,root-sync/deploy-authorization-policies,g" ~/asm-acm-tutorial-dir/acm-config.yaml
    gcloud beta container fleet config-management apply \
        --membership ${MEMBERSHIP} \
        --config ~/asm-acm-tutorial-dir/acm-config.yaml
    

    Perintah sebelumnya men-deploy resource berikut:

    • AuthorizationPolicy di asm-ingress ruang nama:

      apiVersion: security.istio.io/v1beta1
      kind: AuthorizationPolicy
      metadata:
        name: asm-ingressgateway
      spec:
        selector:
          matchLabels:
            asm: ingressgateway
        rules:
        - to:
          - operation:
              ports:
              - "8080"
    • AuthorizationPolicy per aplikasi di onlineboutique namespace, berikut adalah contoh untuk aplikasi cartservice:

      apiVersion: security.istio.io/v1beta1
      kind: AuthorizationPolicy
      metadata:
        name: cartservice
      spec:
        selector:
          matchLabels:
            app: cartservice
        rules:
        - from:
          - source:
              principals:
              - cluster.local/ns/onlineboutique/sa/frontend
              - cluster.local/ns/onlineboutique/sa/checkoutservice
          to:
          - operation:
              paths:
              - /hipstershop.CartService/AddItem
              - /hipstershop.CartService/GetCart
              - /hipstershop.CartService/EmptyCart
              methods:
              - POST
              ports:
              - "7070"
    • ServiceAccount per aplikasi di asm-ingress dan onlineboutique namespace agar identitas unik per aplikasi dievaluasi sebagai principal di AuthorizationPolicies. Berikut adalah contoh untuk aplikasi cartservice:

      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: cartservice
  9. Lihat status Config Sync untuk RootSync dan kedua RepoSyncs:

    gcloud alpha anthos config sync repo describe
    

    Outputnya mirip dengan:

    getting 3 RepoSync and RootSync from projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial
    [
      {
        "clusters": [
          "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
        ],
        "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
        "errors": [],
        "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/root-sync/deploy-authorization-policies@main",
        "status": "SYNCED"
      },
      {
        "clusters": [
          "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
        ],
        "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
        "errors": [],
        "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/ingress-gateway/authorization-policies@main",
        "status": "SYNCED"
      },
      {
        "clusters": [
          "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
        ],
        "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
        "errors": [],
        "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/online-boutique/authorization-policies@main",
        "status": "SYNCED"
      }
    ]
    

    Jika Anda melihat status: RECONCILING dan bukan status: SYNCED, tunggu beberapa menit lalu jalankan gcloud alpha anthos config sync repo describe lagi.

    Untuk melihat informasi dari satu repositori saja, Anda dapat menggunakan --sync-name dan --sync-namespace. Dan untuk melihat secara detail sumber daya yang dikelola, Anda dapat menambahkan flag --managed-resources. Untuk informasi selengkapnya, lihat Lihat status Config Sync di beberapa cluster.

  10. Kunjungi lagi aplikasi Butik Online dari browser Anda:

    echo http://${EXTERNAL_IP}
    

    Jika menunggu beberapa menit, sekarang Anda akan melihat situs berhasil berfungsi kembali seperti yang diharapkan.

Melihat status fitur keamanan GKE Enterprise

Anda dapat melihat status fitur keamanan GKE Enterprise, termasuk autentikasi dan kebijakan otorisasi di Konsol Google Cloud.

  1. Di konsol Google Cloud, buka halaman GKE Enterprise Security.

    Buka GKE Enterprise Security

    Ringkasan Kebijakan menampilkan status keamanan aplikasi, termasuk Service access control (AuthorizationPolicies) dan mTLS.

  2. Klik Audit Kebijakan untuk melihat status kebijakan beban kerja untuk cluster dan kedua namespace (asm-ingress dan onlineboutique).

    Kartu Kontrol akses layanan dan status mTLS menyediakan gambaran umum tingkat tinggi.

    Ringkasan tingkat tinggi tentang kontrol akses layanan dan status mTLS

    Daftar Workloads menampilkan Service access control dan status mTLS dari setiap beban kerja.

    Daftar mendetail setiap workload serta kontrol akses layanan dan status mTLS-nya

Anda kini telah mengamankan cluster dan mesh dengan Pengontrol Kebijakan dan Sinkronisasi Konfigurasi.

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Menghapus project

    Menghapus project Google Cloud:

    gcloud projects delete PROJECT_ID

Menghapus resource satu per satu

Untuk menghapus resource satu per satu:

  1. Membatalkan pendaftaran cluster Anda dari fleet:

    gcloud

    gcloud container fleet memberships unregister ${CLUSTER} \
        --project=${PROJECT_ID} \
        --gke-cluster=${CLUSTER_ZONE}/${CLUSTER}
    

    Outputnya mirip dengan hal berikut ini:

    kubeconfig entry generated for asm-acm-tutorial.
    Waiting for membership to be deleted...done.
    Deleting membership CR in the cluster...done.
    Deleting namespace [gke-connect] in the cluster...done.
    

    Config Connector

    kubectl delete -f ~/asm-acm-tutorial-dir/fleet-membership.yaml
    
  2. Hapus cluster Anda:

    gcloud

    gcloud container clusters delete ${CLUSTER} \
        --zone ${CLUSTER_ZONE}
    

    Tekan y saat diminta. Perintah ini membutuhkan waktu lebih dari lima menit untuk selesai.

    Outputnya mirip dengan hal berikut ini:

    Deleting cluster asm-acm-tutorial...done.
    Deleted [https://container.googleapis.com/v1/projects/PROJECT_ID/zones/us-east4-a/clusters/asm-acm-tutorial].
    

    Config Connector

    kubectl delete -f ~/asm-acm-tutorial-dir/container-cluster.yaml
    
  3. Hapus file yang Anda buat:

    rm -r ~/asm-acm-tutorial-dir
    

Langkah selanjutnya