Memindai paket Java secara manual

Dengan On-Demand Scanning API, Anda dapat memindai image yang disimpan secara lokal di komputer, atau dari jarak jauh di Artifact Registry atau Container Registry. Anda dapat menggunakan Pemindaian On-Demand untuk memindai image di pipeline CI/CD, untuk menemukan kerentanan sistem dan kerentanan paket Java (Maven) sebelum memutuskan apakah akan menyimpannya di registry. Lihat Halaman harga untuk mengetahui informasi harga.

Halaman ini menjelaskan cara memindai image container secara manual untuk menemukan kerentanan sistem dan kerentanan paket Maven.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the On-Demand Scanning API.

    Enable the API

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the On-Demand Scanning API.

    Enable the API

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. Menambahkan komponen local-extract ke penginstalan Google Cloud CLI Anda

    Menggunakan Pengelola Komponen Google Cloud CLI

    Pengelola komponen akan meminta Anda menginstal komponen yang diperlukan saat pertama kali menjalankan perintah pemindaian.

    Menggunakan pengelola paket sistem

    • Untuk Debian/Ubuntu:
      sudo apt install google-cloud-sdk-local-extract
          
    • Untuk Red Hat/Fedora/CentOS:
      sudo dnf install google-cloud-sdk-local-extract
          

      Atau, Anda dapat mengganti dnf dengan yum dalam perintah sebelumnya.

  13. Berikan peran IAM On-Demand Scanning Admin kepada akun pengguna atau layanan yang akan Anda gunakan dengan Pemindaian On-Demand. Jika menggunakan akun pemilik project untuk menjalankan pemindaian, Anda dapat melewati langkah ini.

Memindai image container

  • Pemindaian lokal:

    gcloud artifacts docker images scan IMAGE_URI \
        [--location=(us,europe,asia)] [--async]
    

    Untuk image lokal, gunakan salah satu format berikut untuk IMAGE_URI:

    • REPOSITORY:TAG
    • REPOSITORY
  • Pemindaian jarak jauh:

    gcloud artifacts docker images scan IMAGE_URI \
         --remote [--location=(us,europe,asia)] [--async]
    

    Untuk image jarak jauh, gunakan salah satu format berikut untuk IMAGE_URI:

    • HOSTNAME/PROJECT_ID/REPOSITORY_ID/IMAGE_ID@sha256:HASH
    • HOSTNAME/PROJECT_ID/REPOSITORY_ID/IMAGE_ID:HASH
    • HOSTNAME/PROJECT_ID/REPOSITORY_ID/IMAGE_ID
    • HOSTNAME/PROJECT_ID/IMAGE_ID@sha256:HASH
    • HOSTNAME/PROJECT_ID/IMAGE_ID:HASH
    • HOSTNAME/PROJECT_ID/IMAGE_ID

    Untuk image di Artifact Registry, IMAGE_URI harus menyertakan REPOSITORY_ID.

Untuk pemindaian lokal dan jarak jauh, Anda dapat menggunakan flag opsional berikut:

  • --location adalah flag opsional untuk memilih multi-region tempat pemindaian dilakukan secara manual. Memilih multi-region yang lebih dekat dengan lokasi fisik Anda akan meminimalkan latensi. Lokasi yang tersedia adalah: us, europe, dan asia. Lokasi defaultnya adalah us.

  • --async adalah flag opsional untuk menjalankan proses pemindaian secara asinkron. Jika Anda menghilangkan tanda ini, terminal akan diblokir hingga proses pemindaian selesai.

Pemindaian sinkron

Contoh berikut menunjukkan output pemindaian sinkron, tanpa tanda --async:

$ gcloud artifacts docker images scan jenkins:2.60.3-alpine

✓ Scanning container image
  ✓ Locally extracting packages and versions from local container image
  ✓ Remotely initiating analysis of packages and versions
  ✓ Waiting for analysis operation to complete [projects/my-project/locations/us/operations/87d2e137-1d1c-4790-8e5e-daf6c96ae7d7]
Done.
done: true
metadata:
  '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesMetadata
  createTime: '2021-01-05T23:03:04.185261Z'
  resourceUri: jenkins:2.60.3-alpine
name: projects/my-project/locations/us/operations/87d2e137-1d1c-4790-8e5e-daf6c96ae7d7
response:
  '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesResponse
  scan: projects/my-project/locations/us/scans/2fe2bfb8-f0c5-4dd6-a8c8-38961869767a

Gunakan nama pemindaian untuk mengambil hasil kerentanan. Dalam contoh, nama pemindaian adalah nilai scan di baris terakhir pesan output.

Pemindaian asinkron

Contoh berikut menunjukkan output dari pemindaian asinkron:

$ gcloud artifacts docker images scan jenkins:2.60.3-alpine --async

✓ Scanning container image
  ✓ Locally extracting packages and versions from local container image
  ✓ Remotely initiating analysis of packages and versions
Done.
Check operation [projects/cloud-project/locations/us/operations/2e1a6b1f-16e5-4427-ac86-72c998a3dd16] for status.
metadata:
  '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesMetadata
  createTime: '2021-01-05T23:04:54.393510Z'
  resourceUri: jenkins:2.60.3-alpine
name: projects/my-project/locations/us/operations/2e1a6b1f-16e5-4427-ac86-72c998a3dd16

Tindakan ini akan meluncurkan operasi yang berjalan lama dan menampilkan ID-nya tanpa memblokir terminal Anda. Gunakan ID operasi, nilai name di baris terakhir pesan output, untuk melakukan polling pada operasi.

Jajak pendapat untuk menjalankan operasi yang berjalan lama

Gunakan ID operasi dari output perintah pemindaian asinkron untuk memeriksa status operasi:

gcloud artifacts docker images get-operation LRO_ID

Dengan LRO_ID adalah ID operasi yang berjalan lama.

Melanjutkan contoh bagian pemindaian asinkron, untuk memeriksa status operasi:

$ gcloud artifacts docker images get-operation \
  projects/cloud-project/locations/us/operations/2e1a6b1f-16e5-4427-ac86-72c998a3dd16

done: true
metadata:
  '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesMetadata
  createTime: '2021-01-05T23:04:54.393510Z'
  resourceUri: jenkins:2.60.3-alpine
name: projects/my-project/locations/us/operations/2e1a6b1f-16e5-4427-ac86-72c998a3dd16
response:
  '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesResponse
  scan: projects/my-project/locations/us/scans/2fe2bfb8-f0c5-4dd6-a8c8-38961869767a

Jika output menyertakan baris done: true, operasi pemindaian selesai. Gunakan nama pemindaian untuk mengambil hasil kerentanan. Nama pemindaian adalah nilai scan di baris terakhir pesan output.

Mengambil hasil pemindaian

Untuk mengambil hasil pemindaian setelah operasi pemindaian selesai, gunakan perintah berikut:

gcloud artifacts docker images list-vulnerabilities SCAN_NAME [--limit=X]

Dengan keterangan:

Contoh:

createTime: '2021-06-29T17:01:18.819477Z'
kind: VULNERABILITY
name: projects/my-project/locations/us/occurrences/06305977-f557-4772-8586-4260684291d3
noteName: projects/my-project/notes/CVE-2014-0114
resourceUri: jenkins:2.60.3-alpine
updateTime: '2021-06-29T17:01:18.819477Z'
vulnerability:
  cvssScore: 4.3
  effectiveSeverity: MEDIUM
  longDescription: http/conn/ssl/SSLConnectionSocketFactory.java in ...
  packageIssue:
  - affectedCpeUri: cpe:/o:alpine:alpine_linux:3.13
    affectedPackage: org.apache.httpcomponents:httpclient
    affectedVersion:
      fullName: 4.0.2
      kind: NORMAL
      name: 4.0.2
    effectiveSeverity: MEDIUM
    fixedCpeUri: cpe:/o:alpine:alpine_linux:3.13
    fixedPackage: org.apache.httpcomponents:httpclient
    fixedVersion:
      fullName: 4.3.6
      kind: NORMAL
      name: 4.3.6
    packageType: MAVEN
  relatedUrls:
  - label: More Info
    url: https://security-tracker.debian.org/tracker/CVE-2015-5262
  severity: MEDIUM
  shortDescription: CVE-2015-5262

Output perintah ini adalah daftar kemunculan dalam format Grafeas. Dalam hal ini, laporan menunjukkan satu kerentanan tingkat keparahan sedang yang ditemukan dalam image. Kerentanan paket Maven berisi kolom packageType:MAVEN.

Hasil pemindaian tersedia selama 48 jam setelah operasi pemindaian selesai.

Langkah selanjutnya