API profil dan skor keamanan

Halaman ini berlaku untuk Apigee dan Apigee hybrid.

Lihat Dokumentasi Apigee Edge.

Ringkasan

Halaman ini menjelaskan cara mengelola skor keamanan dan profil keamanan Penilaian Risiko menggunakan Google Cloud Platform. Halaman ini juga menampilkan contoh permintaan API.

Untuk ikhtisar fungsi Penilaian Risiko, termasuk batasan, dan petunjuk untuk menggunakan UI, lihat Ringkasan dan UI penilaian risiko.

Contoh Risk Assessment v2 API

Mengambil hasil penilaian keamanan batch

Pengguna dengan peran Security Admin atau Security Viewer memiliki izin untuk melakukan komputasi penilaian risiko {i>ad hoc<i}. Anda harus menentukan profil keamanan, ruang lingkup, dan sumber daya yang akan dinilai. Resource dapat include_all_resources: true hingga komputasi pada semua resource dalam ruang lingkupnya, atau hanya beberapa saja. Lihat securityAssessmentResults.batchCompute dalam dokumentasi referensi Apigee Management API untuk mengetahui informasi lebih lanjut tentang fungsi ini.

curl "https://apigee.googleapis.com/v1/organizations/ORG/securityAssessmentResults:batchCompute" \
  -X POST \
  -H "Authorization: Bearer $TOKEN"
  -H 'Content-type: application/json' \
  -d '{
    "profile": "google-default",
    "scope": "ENV",
    "include_all_resources": {}
  }'

dengan:

  • ORG adalah organisasi Anda.
  • ENV adalah lingkungan tempat Anda melihat skor.

Ini adalah respons potensial untuk permintaan di atas.

  {
    "security_assessment_results": [
      {
        "resource": {
          "name" : "my-proxy-1",
          "revision": "1"
        },
        "create_time": "2023-11-22T03:04:05Z",
        "score": 99,
        "severity": "low",
        "failed_assessment_by_weight": {
          "MINOR": 1
        },
        "assessment_recommendations": {
          "CORS-Check": {
            "weight": "MINOR",
            "recommendations": [
              {
                "description": "add CORS policy to your proxy",
                "learn_more_link": "https://example.com"
              }
            ]
          }
        }
      },
      {
        "resource": {
          "name" : "my-proxy-2",
          "revision": "3"
        },
        "create_time": "2023-11-22T03:04:05Z",
        "score": 100,
        "severity": "low",
        "resource_revision": "1",
        "failed_assessment_by_weight": {
          "MINOR": 0
        },
        "assessment_recommendations": {}
      }
    ]
  }

Penilaian Risiko v1

Bagian ini menampilkan informasi dan contoh untuk Risk Assessment v1 API.

Batasan skor keamanan saat menggunakan API

Skor keamanan memiliki batasan berikut saat digunakan dari skor dan profil keamanan API:

  • Kolom input yang didukung di JSON:
  • Beberapa filter input tidak didukung.
  • Kolom dampak dalam respons tidak didukung. (Bidang dampak adalah potensi dampak dari rekomendasi tentang skor keseluruhan. Ini menunjukkan seberapa penting rekomendasi ini untuk meningkatkan skor.)

Untuk batasan skor keamanan umum yang tidak spesifik untuk digunakan dari API, lihat Batasan skor keamanan v1.

Parameter dalam contoh panggilan API

Bagian berikut memberikan contoh panggilan API dan dapat menggunakan parameter berikut:

  • ORG adalah organisasi Anda.
  • ENV adalah lingkungan tempat Anda ingin menghitung skor.
  • ENVGROUP adalah grup lingkungan yang berisi lingkungan.
  • PROFILE_ID adalah nama profil. PROFILE_ID dapat default atau nama profil khusus yang Anda buat.

    PROFILE_ID harus berisi dari 1 hingga 63 karakter, yang dapat berupa huruf kecil, angka 0-9, atau tanda hubung. Karakter pertama harus huruf kecil. Karakter terakhir harus berupa huruf atau angka kecil.

  • PROXY_NAME: Nama proxy.
  • RESOURCES dapat berupa:
    • {"all_resources":true} untuk semua resource dalam cakupan.
    • {"includes": { "resources": [{"name": "<proxy-name>"}]} untuk memantau satu atau {i>proxy<i} yang lebih spesifik. Misalnya, {"includes": { "resources": [{"name": "my-proxy-1"}]} hingga memantau proxy yang disebut my-proxy-1.
    • {"excludes": { "resources": [{"name": "<proxy-name>"}]} untuk memantau semua sumber daya kecuali satu atau beberapa {i>proxy<i} yang ditentukan. Misalnya, {"excludes": { "resources": [{"name": "my-proxy-1"}]} memantau semua resource kecuali proxy yang disebut my-proxy-1.
  • $TOKEN adalah variabel lingkungan untuk Token akses OAuth.
  • timeRange adalah rentang waktu untuk skor.

Contoh Risk Assessment v1 API

Filter yang didukung di API

Tabel berikut mencantumkan filter yang didukung dalam API, dan filter jalur komponen.

Filter Jalur komponen
Skor lingkungan /org@ORG/envgroup@ENVGROUP/env@ENV
Semua komponen pokok Skor sumber /org@ORG/envgroup@ENVGROUP/env@ENV/source
Skor penyalahgunaan /org@ORG/envgroup@ENVGROUP/env@ENV/source/abuse
Skor untuk semua proxy /org@ORG/envgroup@ENVGROUP/env@ENV/proxies
Skor untuk proxy tertentu /org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@PROXY_NAME
Skor kebijakan untuk proxy tertentu
  • /org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@PROXY_NAME/policies
  • /org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@PROXY_NAME/policies/individual
Skor kebijakan mediasi untuk proxy tertentu /org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@PROXY_NAME/policies/individual/mediation
Skor kebijakan keamanan untuk proxy tertentu /org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@PROXY_NAME/policies/individual/security
Skor kebijakan Auth untuk proxy tertentu /org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@PROXY_NAME/policies/individual/security/auth
Skor kebijakan CORS untuk proxy tertentu /org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@PROXY_NAME/policies/individual/security/cors
Skor kebijakan ancaman untuk proxy tertentu /org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@PROXY_NAME/policies/individual/security/threat
Skor kebijakan untuk semua proxy di env
  • /org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@$proxy/policies
  • /org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@$proxy/policies/individual
Skor kebijakan mediasi untuk semua proxy di env /org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@$proxy/policies/individual/mediation
Skor kebijakan keamanan untuk semua proxy di env /org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@$proxy/policies/individual/security
Skor kebijakan Auth untuk semua proxy di env /org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@$proxy/policies/individual/security/auth
Skor kebijakan CORS untuk semua proxy di env /org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@$proxy/policies/individual/security/cors
Skor kebijakan ancaman untuk semua proxy di env /org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@$proxy/policies/individual/security/threat

Gunakan profil keamanan default

Contoh berikut menunjukkan cara menggunakan profil keamanan default. Lihat Parameter dalam contoh panggilan API untuk mengetahui parameter yang digunakan dalam contoh.

Melampirkan profil keamanan default ke lingkungan

Untuk melihat skor keamanan, Anda harus melampirkan profil ke lingkungan yang keamanannya yang ingin Anda evaluasi. Untuk melampirkan default keamanan profile ke lingkungan, gunakan perintah berikut:

curl "https://apigee.googleapis.com/v1/organizations/ORG/securityProfiles/default/environments" \
       -X POST \
       -d '{"name": "ENV"}' \
       -H 'Content-type: application/json' \
       -H "Authorization: Bearer $TOKEN"
Mendapatkan definisi profil keamanan default

Untuk mendapatkan definisi profil keamanan default, masukkan perintah berikut:

curl "https://apigee.googleapis.com/v1/organizations/ORG/securityProfiles/default" \
       -H 'Content-type: application/json' \
       -H "Authorization: Bearer $TOKEN"

Melepaskan profil keamanan default dari lingkungan

Jika perlu melepaskan profil default dari lingkungan, Anda dapat melakukannya seperti berikut:

  curl "https://apigee.googleapis.com/v1/organizations/ORG/securityProfiles/default/environments/ENV" \
         -X DELETE
         -H 'Content-type: application/json' \
         -H "Authorization: Bearer $TOKEN"

Menggunakan profil keamanan khusus

Anda dapat membuat profil keamanan kustom dengan panggilan API melalui salah satu cara berikut:

  • Tentukan profil secara eksplisit dalam isi panggilan.
  • Lampirkan file JSON yang berisi definisi profil ke panggilan.

Bagian berikut memberikan contoh kedua metode tersebut. Lihat Parameter dalam contoh panggilan API untuk mengetahui parameter yang digunakan dalam contoh.

Kolom berikut dalam contoh panggilan API menetapkan profil kustom:

  • description: Deskripsi profil kustom.
  • profileConfig: Daftar kategori yang akan disertakan dalam profil kustom. Ini dapat berupa subset dari berikut ini kategori keamanan:
    • abuse
    • authorization
    • cors
    • mtls
    • mediation
    • threat
Menentukan profil dalam isi panggilan API

Untuk menentukan profil kustom dalam isi panggilan API, masukkan perintah yang mirip dengan berikut ini:

curl "https://apigee.googleapis.com/v1/organizations/ORG/securityProfiles?security_profile_id=PROFILE_ID" \
       -X POST \
       -H "Authorization: Bearer $TOKEN" \
       -H "Content-Type: application/json" \
       -d '{
         "description":"test custom profile",
         "profileConfig" : {
           "categories":[
             {"cors":{}},
             {"threat":{}}
           ]
         }
       }'

Tindakan ini akan membuat profil kustom yang menyertakan kategori kategori dan ancaman, serta akan menampilkan respons berikut:

{
  "name": "PROFILE_ID",
  "revisionId": "1",
  "revisionCreateTime": "2023-07-17T18:47:08Z",
  "revisionUpdateTime": "2023-07-17T18:47:08Z",
  "scoringConfigs": [
    {
      "title": "json",
      "scorePath": "/org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@$proxy/policies/individual/security/threat/json",
      "description": "Check if JSONThreatProtection policy is configured."
    },
    {
      "title": "xml",
      "scorePath": "/org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@$proxy/policies/individual/security/threat/xml",
      "description": "Check if XMLThreatProtection policy is configured."
    },
    {
      "title": "cors",
      "scorePath": "/org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@$proxy/policies/individual/security/cors",
      "description": "Check if CORS policy is configured."
    }
  ],
  "maxScore": 1200,
  "minScore": 200,
  "profileConfig": {
    "categories": [
      {
        "cors": {}
      },
      {
        "threat": {}
      }
    ]
  },
  "description": "test custom profile"
  }
Menentukan profil dengan melampirkan file JSON ke panggilan API

Anda juga dapat menentukan profil keamanan khusus dengan melampirkan file JSON yang menentukan profil ke panggilan API. Sebagai contoh, pertama-tama buat file JSON berikut:

{
  "description": "test custom profile",
  "profileConfig" : {
    "categories":[
      {"cors":{}},
      {"threat" :{}},
    ]
  }
}

Ini menentukan profil dengan kategori, Kor, dan ancaman. Anda kemudian dapat membuat profil berdasarkan kategori ini sebagai berikut:

curl "https://apigee.googleapis.com/v1/organizations/ORG/securityProfiles?security_profile_id=PROFILE_ID" \
       -X POST \
       -H "Authorization: Bearer $TOKEN" \
       -H "Content-Type: application/json" \
       -d @create_profile.json

dengan create_profile.json adalah nama file JSON yang dijelaskan di atas.

Mendapatkan definisi profil keamanan kustom

Untuk mendapatkan definisi profil keamanan kustom, masukkan perintah yang mirip dengan berikut ini:

  curl "https://apigee.googleapis.com/v1/organizations/ORG/securityProfiles/PROFILE_ID" \
         -X GET \
         -H "Authorization: Bearer $TOKEN" \
         -H "Content-Type: application/json"
Melepaskan profil keamanan kustom dari lingkungan

Untuk melepaskan profil keamanan kustom dari lingkungan, masukkan perintah mirip dengan contoh berikut ini:

curl "https://apigee.googleapis.com/v1/organizations/ORG/securityProfiles/PROFILE_ID/environments/ENV" \
       -X DELETE \
       -H "Authorization: Bearer $TOKEN" \
       -H "Content-Type: application/json"
Menghapus profil keamanan khusus

Untuk menghapus profil keamanan kustom, masukkan perintah yang mirip dengan berikut ini:

curl "https://apigee.googleapis.com/v1/organizations/ORG/securityProfiles/PROFILE_ID" \
       -X DELETE \
       -H "Authorization: Bearer $TOKEN" \
       -H "Content-Type: application/json"

Dapatkan skor untuk lingkungan

Bagian berikut menampilkan contoh cara mendapatkan skor untuk lingkungan. Lihat Parameter dalam contoh panggilan API untuk mengetahui parameter yang digunakan dalam contoh.

Dapatkan semua skor untuk lingkungan

Untuk mendapatkan semua skor suatu lingkungan, masukkan perintah yang mirip dengan berikut ini:

curl "https://apigee.googleapis.com/v1/organizations/ORG/securityProfiles/PROFILE_ID/environments/ENV:computeEnvironmentScores" \
       -X POST \
       -d '{"timeRange":
              {
                "startTime": "YYYY-MM-DDT00:00:00Z",
                "endTime": "YYYY-MM-DDT00:00:00Z"
              }
           }' \
       -H 'Content-type: application/json' \
       -H "Authorization: Bearer $TOKEN"

Lihat Halaman referensi computeEnvironmentScores untuk deskripsi permintaan beserta responsnya.

Mendapatkan skor sumber untuk lingkungan

Untuk mendapatkan skor sumber untuk lingkungan, masukkan perintah yang mirip dengan berikut ini:

curl "https://apigee.googleapis.com/v1/organizations/ORG/securityProfiles/PROFILE_ID/environments/ENV:computeEnvironmentScores" \
       -X POST \
       -d '{"timeRange":
              {
                "startTime": "YYYY-MM-DDT00:00:00Z",
                "endTime": "YYYY-MM-DDT00:00:00Z"
              },
            "filters": [{"scorePath": "/org@ORG/envgroup@ENVGROUP/env@ENV/source"}]
           }' \
       -H 'Content-type: application/json' \
       -H "Authorization: Bearer $TOKEN"
Mendapatkan skor penyalahgunaan di sumber untuk suatu lingkungan

Untuk mendapatkan skor penyalahgunaan di sumber suatu lingkungan, masukkan perintah yang mirip dengan berikut ini:

curl "https://apigee.googleapis.com/v1/organizations/ORG/securityProfiles/PROFILE_ID/environments/ENV:computeEnvironmentScores" \
       -X POST \
       -d '{"timeRange":
              {
                "startTime": "YYYY-MM-DDT00:00:00Z",
                "endTime": "YYYY-MM-DDT00:00:00Z"
              },
            "filters": [{"scorePath": "/org@ORG/envgroup@ENVGROUP/env@ENV/source/abuse"}]
           }' \
       -H 'Content-type: application/json' \
       -H "Authorization: Bearer $TOKEN"
Dapatkan skor untuk semua proxy di lingkungan

Guna mendapatkan skor untuk semua proxy di lingkungan, masukkan perintah yang mirip dengan berikut ini:

curl "https://apigee.googleapis.com/v1/organizations/ORG/securityProfiles/PROFILE_ID/environments/ENV:computeEnvironmentScores" \
       -X POST \
       -d '{"timeRange":
              {
                "startTime": "YYYY-MM-DDT00:00:00Z",
                "endTime": "YYYY-MM-DDT00:00:00Z"
              },
            "filters": [{"scorePath": "/org@ORG/envgroup@ENVGROUP/env@ENV/proxies"}]
           }' \
       -H 'Content-type: application/json' \
       -H "Authorization: Bearer $TOKEN"
Mendapatkan skor untuk proxy tertentu dalam lingkungan

Guna mendapatkan skor untuk proxy tertentu dalam suatu lingkungan, masukkan perintah yang mirip dengan berikut ini:

curl "https://apigee.googleapis.com/v1/organizations/ORG/securityProfiles/PROFILE_ID/environments/ENV:computeEnvironmentScores" \
       -X POST \
       -d '{"timeRange":
              {
                "startTime": "YYYY-MM-DDT00:00:00Z",
                "endTime": "YYYY-MM-DDT00:00:00Z"
              },
            "filters": [{"scorePath": "/org@ORG/envgroup@ENVGROUP/env@ENV/proxies/proxy@PROXY"}]
           }' \
       -H 'Content-type: application/json' \
       -H "Authorization: Bearer $TOKEN"

dengan PROXY adalah proxy yang skornya ingin Anda dapatkan.

Mendapatkan skor untuk target tertentu dalam lingkungan

Guna mendapatkan skor untuk target tertentu di lingkungan, masukkan perintah yang mirip dengan berikut ini:

curl "https://apigee.googleapis.com/v1/organizations/ORG/securityProfiles/PROFILE_ID/environments/ENV:computeEnvironmentScores" \
       -X POST \
       -d '{"timeRange":
              {
                "startTime": "YYYY-MM-DDT00:00:00Z",
                "endTime": "YYYY-MM-DDT00:00:00Z"
              },
            "filters": [{"scorePath": "/org@ORG/envgroup@ENVGROUP/env@ENV/target@TARGET"}]
           }' \
       -H 'Content-type: application/json' \
       -H "Authorization: Bearer $TOKEN"