Mengizinkan akses multi-cloud ke resource yang dilindungi dari endpoint pribadi di luar perimeter Kontrol Layanan VPC

Arsitektur referensi

Dalam arsitektur referensi berikut, VPC Bersama di-deploy dengan model Gemini di project layanan, ph-fm-svc-project (project layanan model dasar) dengan atribut kebijakan layanan yang mengizinkan akses pribadi ke Vertex AI API dari AWS:

  • Satu perimeter Kontrol Layanan VPC
  • Identitas pengguna yang ditentukan project

Diagram arsitektur penggunaan Kontrol Layanan VPC untuk membuat perimeter layanan.

Opsional: Buat tingkat akses

Jika pengguna akhir Anda memerlukan akses ke Vertex AI melalui Google Cloud konsol, ikuti petunjuk di bagian ini untuk membuat tingkat akses Kontrol Layanan VPC. Namun, jika akses terprogram ke API berasal dari sumber pribadi (seperti lokal dengan Akses Google Pribadi atau Cloud Workstations), tingkat akses tidak diperlukan.

Dalam arsitektur referensi ini, kita menggunakan rentang CIDR perusahaan, corp-public-block, untuk mengizinkan traffic karyawan perusahaan mengakses konsol Google Cloud .

Access Context Manager memungkinkan administrator organisasi menentukan kontrol akses berbasis atribut yang terperinci untuk project dan resource diGoogle Cloud. Google Cloud

Tingkat akses menjelaskan persyaratan yang harus dipenuhi agar permintaan dapat diproses. Contohnya mencakup:

Jika ini adalah pertama kalinya organisasi menggunakan Access Context Manager, maka administrator harus menentukan kebijakan akses, yang merupakan container untuk tingkat akses dan perimeter layanan.

  1. Di pemilih project di bagian atas konsol Google Cloud , klik tab Semua, lalu pilih organisasi Anda.

  2. Buat tingkat akses dasar dengan mengikuti petunjuk di halaman Membuat tingkat akses dasar. Tentukan opsi berikut:

    1. Di bagian Create conditions in, pilih Basic mode.
    2. Di kolom Judul tingkat akses, masukkan corp-public-block.
    3. Di bagian Kondisi, untuk opsi When condition is met, return, pilih TRUE.
    4. Di bagian IP Subnetworks, pilih Public IP.
    5. Untuk rentang alamat IP, tentukan rentang CIDR eksternal yang memerlukan akses ke perimeter Kontrol Layanan VPC.

Membangun perimeter layanan Kontrol Layanan VPC

Saat Anda membuat perimeter layanan, Anda mengizinkan akses ke layanan yang dilindungi dari luar perimeter dengan menentukan project yang dilindungi. Saat menggunakan Kontrol Layanan VPC dengan VPC Bersama, Anda membuat satu perimeter besar yang mencakup project host dan layanan. (Jika Anda hanya memilih project layanan di perimeter, endpoint jaringan yang termasuk dalam project layanan akan tampak berada di luar perimeter, karena subnet hanya dikaitkan dengan project host.)

Pilih jenis konfigurasi untuk perimeter baru

Di bagian ini, Anda akan membuat perimeter layanan Kontrol Layanan VPC dalam mode uji coba. Dalam mode uji coba, perimeter mencatat pelanggaran seolah-olah perimeter diterapkan, tetapi tidak mencegah akses ke layanan yang dibatasi. Menggunakan mode uji coba sebelum beralih ke mode wajib direkomendasikan sebagai praktik terbaik.

  1. Di bagian Navigation menu pada konsol Google Cloud , klik Security, lalu klik VPC Service Controls.

    Buka halaman VPC Service Controls

  2. Di halaman VPC Service Controls, klik Dry run mode.

  3. Klik New perimeter.

  4. Di tab New VPC Service Perimeter, di kotak Perimeter Name, masukkan nama perimeter. Jika tidak, terima nilai default.

    Nama perimeter dapat memiliki panjang maksimum 50 karakter, harus diawali dengan huruf, dan hanya boleh berisi huruf Latin ASCII (a-z, A-Z), angka (0-9), atau garis bawah (_). Nama perimeter peka huruf besar/kecil dan harus unik dalam kebijakan akses.

Pilih resource yang akan dilindungi

  1. Klik Sumber daya yang akan dilindungi.

  2. Untuk menambahkan project atau jaringan VPC yang ingin Anda amankan dalam perimeter, lakukan hal berikut:

    1. Klik Tambahkan Fasilitas.

    2. Untuk menambahkan project ke perimeter, di panel Tambahkan resource, klik Tambahkan project.

      1. Untuk memilih project, di dialog Tambahkan project, pilih kotak centang project tersebut. Dalam arsitektur referensi ini, kami memilih project berikut:

        • infra-host-project
        • aiml-host-project
        • ph-fm-svc-project
      2. Klik Tambahkan resource yang dipilih. Project yang ditambahkan akan muncul di bagian Projects.

Pilih layanan yang dibatasi

Dalam arsitektur referensi ini, cakupan API yang dibatasi terbatas, sehingga hanya mengaktifkan API yang diperlukan untuk Gemini. Namun, sebagai praktik terbaik, sebaiknya batasi semua layanan saat Anda membuat perimeter untuk mengurangi risiko pemindahan data yang tidak sah dari layananGoogle Cloud .

Untuk memilih layanan yang akan diamankan dalam perimeter, lakukan hal berikut:

  1. Klik Layanan yang Dibatasi.

  2. Di panel Restricted Services, klik Add services.

  3. Pada dialog Specify services to restrict, pilih Vertex AI API.

  4. Klik Add Vertex AI API.

Opsional: Pilih layanan yang dapat diakses VPC

Setelan layanan yang dapat diakses VPC membatasi kumpulan layanan yang dapat diakses dari endpoint jaringan di dalam perimeter layanan Anda. Dalam arsitektur referensi ini, kita akan mempertahankan setelan default Semua Layanan.

Opsional: Pilih tingkat akses

Jika Anda membuat tingkat akses CIDR perusahaan di bagian sebelumnya, lakukan hal berikut untuk mengizinkan akses ke resource terlindungi dari luar perimeter:

  1. Klik Tingkat Akses.

  2. Klik kotak Pilih Tingkat Akses.

    Anda juga dapat menambahkan tingkat akses setelah perimeter dibuat.

  3. Centang kotak yang sesuai dengan tingkat akses. (Dalam arsitektur referensi ini, nilainya adalah corp-public-block.)

Kebijakan ingress dan egress

Dalam arsitektur referensi ini, Anda tidak perlu menentukan setelan apa pun di panel Ingress Policy atau Egress Policy.

Buat perimeter

Setelah Anda menyelesaikan langkah-langkah konfigurasi sebelumnya, buat perimeter dengan mengklik Buat perimeter.

Mengonfigurasi konektivitas jaringan antara AWS dan Google API

Mengonfigurasi Private Service Connect untuk Google API

Private Service Connect untuk mengakses Google API adalah alternatif penggunaan Akses Google Pribadi atau nama domain publik untuk Google API. Dalam hal ini, produsernya adalah Google.

Menggunakan Private Service Connect memungkinkan Anda melakukan hal berikut:

  • Buat satu atau beberapa alamat IP internal guna mengakses Google API untuk berbagai kasus penggunaan.
  • Mengarahkan traffic lokal ke alamat IP dan region tertentu saat mengakses Google API.
  • Buat nama DNS endpoint kustom yang digunakan untuk menyelesaikan Google API.

Dalam arsitektur referensi, endpoint Google API Private Service Connect bernama restricted, dengan Alamat IP 10.10.10.3, di-deploy dengan VPC-SC target, yang digunakan sebagai IP Virtual (VIP) untuk mengakses layanan terbatas yang dikonfigurasi di Perimeter VPC-SC. Penargetan layanan yang tidak dibatasi dengan VIP tidak didukung. Untuk mengetahui informasi selengkapnya, lihat Tentang cara mengakses Vertex AI API | Google Cloud.

Mengonfigurasi jaringan VPC AWS

Konektivitas jaringan antara Amazon Web Services (AWS) dan Google Cloud dibuat menggunakan tunnel Virtual Private Network dengan Ketersediaan Tinggi (HA VPN). Koneksi aman ini memfasilitasi komunikasi pribadi antara dua lingkungan cloud. Namun, untuk mengaktifkan perutean dan komunikasi yang lancar antara resource di AWS dan Google Cloud, Border Gateway Protocol (BGP) digunakan.

Di lingkungan Google Cloud , pemberitahuan rute kustom diperlukan. Rute kustom ini secara khusus mengiklankan alamat IP Google API Private Service Connect ke jaringan AWS. Dengan mengiklankan alamat IP ini, AWS dapat membuat rute langsung ke Google API, melewati internet publik dan meningkatkan performa.

Dalam arsitektur referensi, instance Sagemaker di-deploy dengan asosiasi dengan VPC AWS tempat VPN dibuat dengan Google Cloud. Border Gateway Protocol (BGP) digunakan untuk mengiklankan rute di seluruh VPN HA antara AWS dan Google Cloud jaringan. Akibatnya, Google Cloud dan AWS dapat merutekan traffic dua arah melalui VPN. Untuk mengetahui informasi selengkapnya tentang cara menyiapkan koneksi VPN dengan ketersediaan tinggi (HA), lihat Membuat koneksi VPN dengan ketersediaan tinggi (HA) antara Google Cloud dan AWS.

Mengonfigurasi update Route 53

Buat zona dihosting pribadi bernama p.googleapis.com di AWS Route 53 dan tambahkan nama domain yang sepenuhnya memenuhi syarat REGION-aiplatform-restricted.p.googleapis.com dengan alamat IP 10.10.10.3 (IP Googleapis Private Service Connect) sebagai data DNS A. Saat Jupyter Notebook SDK melakukan pencarian DNS untuk Vertex AI API guna menjangkau Gemini, Route 53 akan menampilkan alamat IP Google API Private Service Connect. Jupyter Notebook menggunakan alamat IP yang diperoleh dari Route 53 untuk membuat koneksi ke endpoint Google API Private Service Connect yang dirutekan melalui HA VPN ke Google Cloud.

Mengonfigurasi update Sagemaker

Arsitektur referensi ini menggunakan instance Notebook Amazon SageMaker untuk mengakses Vertex AI API. Namun, Anda dapat melakukan penyiapan yang sama dengan layanan komputasi lain yang mendukung VPC, seperti Amazon EC2 atau AWS Lambda.

Untuk mengautentikasi permintaan, Anda dapat menggunakan kunci akun layanan Google Cloud atau menggunakan Workload Identity Federation. Untuk mengetahui informasi tentang cara menyiapkan Workload Identity Federation, lihat bagian Penyedia lokal atau penyedia cloud lainnya.

Instance Jupyter Notebook memanggil API ke model Gemini yang dihosting di Google Cloud dengan melakukan resolusi DNS ke nama domain yang sepenuhnya memenuhi syarat API Google Private Service Connect kustom REGION-aiplatform-restricted.p.googleapis.com yang menggantikan nama domain yang sepenuhnya memenuhi syarat default (REGION-aiplatform.googleapis.com).

Vertex AI API dapat dipanggil menggunakan Rest, gRPC, atau SDK. Untuk menggunakan nama domain yang sepenuhnya memenuhi syarat pelanggan Private Service Connect, perbarui API_ENDPOINT di Jupyter Notebook dengan kode berikut:

Petunjuk penggunaan Vertex AI SDK untuk Python

  1. Instal SDK:

    pip install --upgrade google-genai
    
  2. Impor dependensi:

    from google.cloud import genai
    from google.genai.types import (
       GenerateContentConfig,
       HarmBlockThreshold,
       HarmCategory,
       Part,
       SafetySetting
    )
    
  3. Lakukan inisialisasi variabel lingkungan berikut:

    PROJECT_ID="ph-fm-svc-projects" # Google Cloud Project ID
    LOCATION_ID="us-central1" # Enter Vertex AI Gemini region such as us-central1
    API_ENDPOINT="https://us-central1-aiplatform-restricted.p.googleapis.com" # PSC Endpoint
    MODEL_ID="gemini-2.0-flash-001" # Gemini Model ID
    
  4. Lakukan inisialisasi Vertex AI SDK untuk Python:

    from google import genai
    client= genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION_ID, http_options={'base_url': API_ENDPOINT})
    
  5. Buat permintaan berikut ke Vertex AI Gemini API:

    prompt = "which weighs more, 1kg feathers or 1kg stones"
    
    safety_settings = [
        SafetySetting(
            category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
            threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        ),
        SafetySetting(
            category=HarmCategory.HARM_CATEGORY_HARASSMENT,
            threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        ),
        SafetySetting(
            category=HarmCategory.HARM_CATEGORY_HATE_SPEECH,
            threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        ),
        SafetySetting(
            category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
            threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        ),
    ]
    
    response = client.models.generate_content(
        model=MODEL_ID,
        contents=prompt,
        config=GenerateContentConfig(
            safety_settings=safety_settings,
        ),
    )
    
    # Response will be `None` if it is blocked.
    print(response.text)
    

    Pada tahap ini, Anda dapat melakukan panggilan API ke Gemini dari notebook Jupyter untuk mengakses Gemini yang dihosting di Google Cloud. Jika panggilan berhasil, output-nya akan terlihat seperti berikut:

    They weigh the same. Both weigh 1 kilogram.
    

Petunjuk untuk menggunakan Vertex AI REST API

Di bagian ini, Anda akan menyiapkan beberapa variabel penting yang digunakan selama proses. Variabel ini menyimpan informasi tentang project Anda, lokasi resource Anda, model Gemini tertentu, dan endpoint PSC yang ingin Anda gunakan. Buka jendela terminal di dalam notebook JupyterLab untuk menjalankan perintah berikut:

  1. Buka jendela terminal di dalam notebook Jupyter.

  2. Lakukan inisialisasi variabel lingkungan berikut:

    export PROJECT_ID="ph-fm-svc-projects"
    export LOCATION_ID="us-central1"
    export API_ENDPOINT="us-central1-aiplatform-restricted.p.googleapis.com" export MODEL_ID="gemini-1.5-flash-002"
    
  3. Gunakan editor teks seperti vim atau nano untuk membuat file baru bernama request.json yang berisi permintaan berformat berikut untuk Vertex AI Gemini API:

    {
        "contents": [
            {
                "role": "user",
                "parts": [
                    {
                        "text": "which weighs more, 1kg feathers or 1kg stones"
                   }
               ]
            }
        ],
            "generationConfig": {
            "temperature": 1,
            "maxOutputTokens": 8192,
            "topP": 0.95,
            "seed": 0
        },
        "safetySettings": [
            {
                "category": "HARM_CATEGORY_HATE_SPEECH",
                "threshold": "OFF"
            },
            {
                "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
                "threshold": "OFF"
            },
            {
                "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
                "threshold": "OFF"
            },
            {
                "category": "HARM_CATEGORY_HARASSMENT",
                "threshold": "OFF"
            }
        ]
    }
    
  4. Buat permintaan curl berikut ke Vertex AI Gemini API:

    curl -v \
    -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://$API_ENDPOINT/v1/projects/$PROJECT_ID/locations/$LOCATION_ID/publishers/google/models/$MODEL_ID:streamGenerateContent" -d '@request.json'
    

Memvalidasi perimeter Anda dalam mode uji coba

Dalam arsitektur referensi ini, perimeter layanan dikonfigurasi dalam mode uji coba, sehingga Anda dapat menguji efek kebijakan akses tanpa penerapan. Artinya, Anda dapat melihat dampak kebijakan terhadap lingkungan Anda jika kebijakan tersebut aktif, tetapi tanpa risiko mengganggu traffic yang sah.

Setelah memvalidasi perimeter dalam mode uji coba, alih ke mode penerapan.

Langkah berikutnya