GCP (Google Cloud Platform) を利用して高度なAIモデルを活用する際には、IAM (アイデンティティとアクセス管理) を適切に構成することが不可欠です。
この記事では、GCPのModel Garden APIを使用する際に、IAMを通じた効率的な認証手法を具体例を交えて紹介します。
概要
IAMは、安全なアクセス制御を提供し、リソースに対する適切なアクセス権を管理するための強力なツールです。GeminiをはじめとするGCPの提供するAIモデルを個人・システム等からプログラム経由で利用する際、IAMを管理・設定することが必要になります。
モデルを利用するには、適切な認証が必要です。オーナーロールを持つ場合には利用からIAM設定までスムーズに行えますが、エンドポイント用の最小権限のロール設計などについても、この記事で解説します。
Model Garden
Model Gardenは、さまざまな機械学習モデルを管理・使用できるプラットフォームです。データ取得やモデルのトレーニング、推論を行うために使用されます。
Geminiを筆頭に、ClaudeやLlamaなどのモデルを使用することもできます。
前提
GCPにおけるプロジェクトが作成されているものとします。
まずGCPでIAMの設定を変更するためには、プロジェクトごとに、作業者に以下のロールが必要になります。
- オーナー
- 編集者+Project IAM 管理者
また、外部ベンダーのモデルは利用申請が必要となります。
例えばClaudeの場合はAnthropicへの利用申請が必要となりますので、すぐに使用できない点に注意してください。
IAMの設定&アクセストークンの発行
ユーザー認証
認証情報の作成
Python のプログラムから Google Cloud にアクセスするには、Application Default Credentials (ADC) を使う方法が便利です。
以下の手順で、個人の Google アカウントで認証情報を設定できます。
gcloud config set project [プロジェクトID] gcloud auth application-default login
この操作により、application_default_credentials.json が生成されます。このファイルは ADC の仕組みによって自動的に読み込まれます。
アクセストークンの発行
この状態で以下のコードを実行すると、自動的に認証情報が取得され、access_token を発行できます。
from google.auth import default from google.auth.transport.requests import Request def get_access_token(): try: credentials, project = default() if not credentials.valid or credentials.expired: credentials.refresh(Request()) return credentials.token except Exception as e: raise Exception(f"Failed to get access token: {e}")
サービスアカウント認証
Google Cloud の本番環境やシステム間連携などで推奨されるのが、サービスアカウントを利用した認証方法です。
ここでは、Python のプログラムからサービスアカウントを用いて認証する方法を説明します。
サービスアカウント作成
- GCP コンソール → 「IAMと管理」 → 「サービスアカウント」
- 「サービスアカウントを作成」
- 名前と説明を入力し、サービスアカウントに対して以下3つのロールを付与
[必要なロール]
- Cloud Functions 閲覧者
- Storage オブジェクト 閲覧者
- Vertex AI ユーザー

秘密鍵を発行
- 作成したサービスアカウントの「鍵」タブを選択
- 「鍵を追加」→「新しい鍵を作成」→ JSON形式 を選択
- your-service-account.json がダウンロードされる(※このファイルは安全な場所に保管してください)
プログラムから秘密鍵をロード
Python からは、GOOGLE_APPLICATION_CREDENTIALS 環境変数を使う方法が一般的です。
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your-service-account.json"
この設定後、自動でサービスアカウント認証になります。
先ほどのget_access_token関数をそのまま使って、同様に認証できます。
Model Gardenへの接続
Model Gardenには既定のURLとBodyを使用してアクセスします。
ここではGeminiとClaudeのAPIにアクセスする例を示しています。
import requests PROJECT_ID = "" MODEL = "" REGION = "" API_VERSION = "" #Claudeの場合は定義してください(vertex-2023-10-16など) # URL gemini_url = f'https://{MODEL_REGION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{REGION}/publishers/google/models/{MODEL}:streamGenerateContent' claude_url = f'https://{MODEL_REGION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{REGION}/publishers/anthropic/models/{MODEL}:streamRawPredict' # Body sample gemini_body = { "contents": { "role": "user", "parts": [ { "text": "こんにちは" } ] } } claude_body = { "anthropic_version": API_VERSION, "messages": [ { "role": "user", "content": [ { "type": "text", "text": system_prompt } ] } ], "max_tokens": 8192 } def request_api(url: str, model_name: str, access_token: str, data: dict) -> dict: headers = { 'Authorization': f'Bearer {access_token}', 'Content-Type': 'application/json' } response = requests.post( url, json=data, headers=headers ) if response.status_code==200: return response.json() else: return {"code": response.status_code, "error": f"Error: {response.text}"}
おわりに
Google CloudのModel Gardenは、最新のAIモデルを効率的に活用するためのプラットフォームです。本記事で紹介したIAMの適切な構成とAPIアクセス手法を活用することで、安全かつ迅速なAI導入が可能となります。
GeminiやClaudeなどの高度な機能を試して、GCPの力を活かしたソリューション開発を進めてください。