Arquitetura de referência
Na seguinte arquitetura de referência, é implementada uma VPC partilhada com um modelo Gemini no projeto de serviço, ph-fm-svc-project
(projeto de serviço de modelo base) com os atributos da política de serviço que permitem o acesso privado à API Vertex AI a partir da AWS:
- Um único perímetro dos VPC Service Controls
- Identidade do utilizador definida pelo projeto
Opcional: crie o nível de acesso
Se os seus utilizadores finais precisarem de acesso ao Vertex AI através da Google Cloud consola, siga as instruções nesta secção para criar um nível de acesso dos VPC Service Controls. No entanto, se o acesso programático às APIs for de origens privadas (como no local com o acesso privado à Google ou as estações de trabalho na nuvem), o nível de acesso não é necessário.
Nesta arquitetura de referência, estamos a usar um intervalo CIDR corporativo, corp-public-block
, para permitir que o tráfego de funcionários corporativos aceda à consola Google Cloud .
O Gestor de acesso sensível ao contexto permite aos Google Cloud administradores da organização definir um controlo de acesso detalhado baseado em atributos para projetos e recursos no Google Cloud.
Os níveis de acesso descrevem os requisitos para que os pedidos sejam aceites. Exemplos:
- Tipo de dispositivo e sistema operativo (requer uma licença do Chrome Enterprise Premium)
- Endereço IP
- Identidade do utilizador
Se esta for a primeira vez que a organização usa o Gestor de contexto de acesso, os administradores têm de definir uma política de acesso, que é um contentor para níveis de acesso e perímetros de serviço.
No seletor de projetos na parte superior da Google Cloud consola, clique no separador Tudo e, de seguida, selecione a sua organização.
Crie um nível de acesso básico seguindo as instruções na página Crie um nível de acesso básico. Especifique as seguintes opções:
- Em Criar condições em, escolha Modo básico.
- No campo Título de nível de acesso, introduza
corp-public-block
. - Na secção Condições, para a opção Quando a condição for cumprida, devolva, escolha VERDADEIRO.
- Em Sub-redes IP, escolha IP público.
- Para o intervalo de endereços IP, especifique o intervalo CIDR externo que requer acesso ao perímetro dos VPC Service Controls.
Crie o perímetro de serviço dos VPC Service Controls
Quando cria um perímetro de serviço, permite o acesso a serviços protegidos a partir do exterior do perímetro especificando os projetos protegidos. Quando usa os VPC Service Controls com a VPC partilhada, cria um perímetro grande que inclui os projetos anfitrião e de serviço. (Se selecionar apenas o projeto de serviço no seu perímetro, os pontos finais de rede pertencentes a projetos de serviço parecem estar fora do perímetro, porque as sub-redes estão associadas apenas ao projeto anfitrião.)
Selecione o tipo de configuração para o novo perímetro
Nesta secção, cria um perímetro de serviço do VPC Service Controls no modo de teste. No modo de teste, os registos do perímetro registam violações como se os perímetros fossem aplicados, mas não impedem o acesso a serviços restritos. Recomendamos que use o modo de teste antes de mudar para o modo aplicado como prática recomendada.
No menu de navegação da Google Cloud consola, clique em Segurança e, de seguida, clique em VPC Service Controls.
Na página VPC Service Controls, clique em Modo de teste.
Clique em Novo perímetro.
No separador Novo perímetro de serviço da VPC, na caixa Nome do perímetro, introduza um nome para o perímetro. Caso contrário, aceite os valores predefinidos.
Um nome de perímetro pode ter um comprimento máximo de 50 carateres, tem de começar com uma letra e só pode conter letras latinas ASCII (a-z, A-Z), números (0-9) ou sublinhados (_). O nome do perímetro é sensível a maiúsculas e minúsculas e tem de ser exclusivo numa política de acesso.
Selecione os recursos a proteger
Clique em Recursos a proteger.
Para adicionar projetos ou redes VPC que quer manter seguros dentro do perímetro, faça o seguinte:
Clique em Adicionar recursos.
Para adicionar projetos ao perímetro, no painel Adicionar recursos, clique em Adicionar projeto.
Para selecionar um projeto, na caixa de diálogo Adicionar projetos, selecione a caixa de verificação desse projeto. Nesta arquitetura de referência, selecionamos os seguintes projetos:
infra-host-project
aiml-host-project
ph-fm-svc-project
Clique em Adicionar recursos selecionados. Os projetos adicionados aparecem na secção Projetos.
Selecione os serviços restritos
Nesta arquitetura de referência, o âmbito das APIs restritas é limitado, o que permite apenas as APIs necessárias para o Gemini. No entanto, como prática recomendada, sugerimos que restrinja todos os serviços quando criar um perímetro para mitigar o risco de exfiltração de dados dos serviços daGoogle Cloud .
Para selecionar os serviços a proteger no perímetro, faça o seguinte:
Clique em Serviços restritos.
No painel Serviços restritos, clique em Adicionar serviços.
Na caixa de diálogo Especificar serviços a restringir, selecione API Vertex AI.
Clique em Adicionar API Vertex AI.
Opcional: selecione os serviços acessíveis da VPC
A definição Serviços acessíveis por VPC limita o conjunto de serviços que são acessíveis a partir de pontos finais de rede no interior do perímetro de serviço. Nesta arquitetura de referência, mantemos a predefinição de Todos os serviços.
Opcional: selecione o nível de acesso
Se criou um nível de acesso CIDR corporativo numa secção anterior, faça o seguinte para permitir o acesso a recursos protegidos a partir do exterior do perímetro:
Clique em Níveis de acesso.
Clique na caixa Escolher nível de acesso.
Também pode adicionar níveis de acesso depois de criar um perímetro.
Selecione a caixa de verificação correspondente ao nível de acesso. (Nesta arquitetura de referência, isto é
corp-public-block
.)
Políticas de entrada e saída
Nesta arquitetura de referência, não é necessário especificar nenhuma definição nos painéis Política de entrada ou Política de saída.
Crie o perímetro
Depois de concluir os passos de configuração anteriores, crie o perímetro clicando em Criar perímetro.
Configure a conetividade de rede entre a AWS e as APIs Google
Configure o Private Service Connect para as APIs Google
O Private Service Connect para aceder às APIs Google é uma alternativa à utilização do acesso privado à Google ou dos nomes de domínio públicos para APIs Google. Neste caso, o produtor é a Google.
A utilização do Private Service Connect permite-lhe fazer o seguinte:
- Crie um ou mais endereços IP internos para aceder às APIs Google para diferentes exemplos de utilização.
- Direcione o tráfego no local para endereços IP e regiões específicos quando aceder às APIs Google.
- Crie um nome DNS de ponto final personalizado usado para resolver APIs Google.
Na arquitetura de referência, um ponto final da API Google do Private Service Connect
denominado restricted
, com o endereço IP 10.10.10.3,
, é implementado com
o VPC-SC de destino, usado como um IP virtual (VIP) para aceder a serviços restritos
configurados no perímetro do VPC-SC. A segmentação de serviços não restritos com o VIP não é suportada. Para mais informações, consulte o artigo
Acerca do acesso à API Vertex AI | Google Cloud.
Configure a rede VPC da AWS
A conetividade de rede entre os Amazon Web Services (AWS) e Google Cloud é estabelecida através de túneis de rede privada virtual de alta disponibilidade (VPN de HA). Esta ligação segura facilita a comunicação privada entre os dois ambientes na nuvem. No entanto, para permitir o encaminhamento e a comunicação totalmente integrados entre os recursos na AWS e Google Cloud, é usado o protocolo de gateway de fronteira (BGP).
No Google Cloud ambiente, é necessário um anúncio de rota personalizado. Esta rota personalizada anuncia especificamente o endereço IP da API Google do Private Service Connect à rede da AWS. Ao anunciar este endereço IP, a AWS pode estabelecer uma rota direta para a API Google, ignorando a Internet pública e melhorando o desempenho.
Na arquitetura de referência, é implementada uma instância do Sagemaker com uma associação à VPC da AWS onde a VPN é estabelecida com Google Cloud. O Border Gateway Protocol (BGP) é usado para anunciar rotas através da VPN de HA entre a AWS e a Google Cloud rede. Como resultado, Google Cloud e a AWS podem encaminhar o tráfego bidirecional através da VPN. Para mais informações sobre a configuração de ligações HA VPN, consulte o artigo Crie ligações HA VPN entre Google Cloud e AWS.
Configure as atualizações do Route 53
Crie uma zona alojada privada denominada p.googleapis.com
no AWS Route 53 e adicione o nome de domínio totalmente qualificado REGION-aiplatform-restricted.p.googleapis.com
com o endereço IP 10.10.10.3
(IP Googleapis do Private Service Connect) como o registo A de DNS.
Quando o SDK do Jupyter Notebook faz uma pesquisa de DNS para a API Vertex AI para alcançar o Gemini, o Route 53 devolve o endereço IP das APIs Google do Private Service Connect. O Jupyter Notebook usa o endereço IP obtido do Route 53 para estabelecer uma ligação ao ponto final das APIs Google do Private Service Connect encaminhado através da VPN de alta disponibilidade para Google Cloud.
Configure as atualizações do SageMaker
Esta arquitetura de referência usa instâncias do Amazon SageMaker Notebook para aceder à API Vertex AI. No entanto, pode conseguir a mesma configuração com outros serviços de computação que suportem a VPC, como o Amazon EC2 ou o AWS Lambda.
Para autenticar os seus pedidos, pode usar uma Google Cloud chave de conta de serviço ou usar a federação de identidades da carga de trabalho. Para obter informações sobre a configuração da federação de identidades da carga de trabalho, consulte o artigo No local ou noutro fornecedor de nuvem.
A instância do Jupyter Notebook invoca uma chamada de API para o modelo Gemini alojado em
Google Cloud executando uma resolução DNS para o nome de domínio totalmente qualificado das APIs Google do Private Service Connect personalizado
REGION-aiplatform-restricted.p.googleapis.com
substituindo o
nome de domínio totalmente qualificado predefinido
(REGION-aiplatform.googleapis.com
).
A API Vertex AI pode ser chamada através de REST, gRPC ou SDK. Para usar o nome de domínio totalmente qualificado do cliente do Private Service Connect, atualize o API_ENDPOINT no Jupyter Notebook com o seguinte:
Instruções para usar o SDK Vertex AI para Python
Instale o SDK:
pip install --upgrade google-cloud-aiplatform
Importe as dependências:
from google.cloud import aiplatform from vertexai.generative_models import GenerativeModel, Part, SafetySetting import vertexai import base64
Inicialize as seguintes variáveis de ambiente:
PROJECT_ID="ph-fm-svc-projects" # Google Cloud Project ID LOCATION_ID="us-central1" # Enter Vertex AI Gemini region such a s us-central1 API_ENDPOINT="us-central1-aiplatform-restricted.p.googleapis.com" # PSC Endpoint MODEL_ID="gemini-2.0-flash-001" # Gemini Model ID
Inicialize o SDK Vertex AI para Python:
vertexai.init(project=PROJECT_ID,api_endpoint=API_ENDPOINT, api_transport="rest")
Faça o seguinte pedido à API Gemini do Vertex AI:
import base64 from vertexai.generative_models import GenerativeModel, Part, SafetySetting def generate(model_id, prompt): model = GenerativeModel( model_id, ) responses = model.generate_content( [prompt], generation_config=generation_config, safety_settings=safety_settings, stream=True, ) for response in responses: print(response.text, end="") generation_config = { "max_output_tokens": 8192, "temperature": 1, "top_p": 0.95, } safety_settings = [ SafetySetting( category=SafetySetting.HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold=SafetySetting.HarmBlockThreshold.OFF ), SafetySetting( category=SafetySetting.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=SafetySetting.HarmBlockThreshold.OFF ), SafetySetting( category=SafetySetting.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold=SafetySetting.HarmBlockThreshold.OFF ), SafetySetting( category=SafetySetting.HarmCategory.HARM_CATEGORY_HARASSMENT, threshold=SafetySetting.HarmBlockThreshold.OFF ), ] prompt = "which weighs more: 1kg feathers or 1kg stones" generate(MODEL_ID,prompt)
Neste ponto, pode fazer uma chamada API para o Gemini a partir do Jupyter Notebook para aceder ao Gemini alojado no Google Cloud. Se a chamada for bem-sucedida, o resultado é semelhante ao seguinte:
They weigh the same. Both weigh 1 kilogram.
Instruções para usar a API REST do Vertex AI
Nesta secção, configura algumas variáveis importantes que vão ser usadas ao longo do processo. Estas variáveis armazenam informações sobre o seu projeto, como a localização dos seus recursos, o modelo Gemini específico e o ponto final do Private Service Connect que quer usar.
Abra uma janela de terminal num notebook Jupyter.
Inicialize as seguintes variáveis de ambiente:
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-2.0-flash-001"
Use um editor de texto, como o
vim
ou onano
, para criar um novo ficheiro denominadorequest.json
que contenha o seguinte pedido formatado para a API Gemini do Vertex AI:{ "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" } ] }
Faça o seguinte pedido cURL à API Gemini do Vertex AI:
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'
Valide o seu perímetro no modo de teste
Nesta arquitetura de referência, o perímetro de serviço está configurado no modo de teste, o que lhe permite testar o efeito da política de acesso sem aplicação. Isto significa que pode ver como as suas políticas afetariam o seu ambiente se estivessem ativas, mas sem o risco de interromper o tráfego legítimo.
Depois de validar o perímetro no modo de teste, mude-o para o modo aplicado.
O que se segue?
- Saiba como usar
p.googleapis.com
nomes DNS. - Para saber como validar o seu perímetro no modo de teste, veja o vídeo sobre o registo de teste do VPC Service Controls.
- Saiba como usar a API REST do Vertex AI.
- Saiba mais sobre a utilização do SDK Vertex AI para Python.