GCPで完結するエンタープライズAI環境構築ガイド:Gemini・Imagen・NotebookLMをEntra ID属性ベースSSOで従量課金利用する

はじめに

「Gemini・Imagen・NotebookLMをエンタープライズで使いたいが、Google Workspaceは導入したくない」「認証はEntra IDで統一しているので、ユーザー管理はGCP側に持ちたくない」—— こうした要件に応える構成を本記事では解説します。

要件整理

要件本記事での対応方針
Gemini・Imagen・NotebookLMを従量課金で利用Vertex AI API / Vertex AI Studio(GCP標準機能)
IdPはEntra ID、SSOで統一Workforce Identity Federation(OIDC)
ユーザー・グループ同期なし属性ベースアクセス制御(トークンクレームをそのまま利用)
Google Workspaceなし・GCPで完結GCP単体構成(Workspaceライセン不要)
UIはスクラッチ開発なしVertex AI Studio(GCP標準Web UI)を利用

この構成が有効なケース

  • Microsoft 365環境でEntra IDが既存IdP
  • GCPを新規導入し、AIサービスを従量課金で試験・本番運用したい
  • IT部門がGCPのユーザー管理を最小化したい(HR属性で自動制御)
  • SIer・コンサル等でGWSライセンスコストを回避したい

全体アーキテクチャ

graph TB subgraph "社内環境(既存)" USER[社員ブラウザ] ENTRA[Entra ID\n社内IdP] HR[HR・属性情報\n部署・役職・ライセンス種別] end subgraph "GCP 認証・認可レイヤー" WIF[Workforce Identity\nFederation Pool] PROVIDER[OIDC Provider\nEntra ID連携] STS[Security Token Service\nトークン交換] IAM[Cloud IAM\n属性ベースポリシー] end subgraph "GCP サービス(標準UI含む)" CONSOLE[Google Cloud Console\n管理UI] VAISTUDIO[Vertex AI Studio\n標準チャット・生成UI] GEMINI[Vertex AI\nGemini API] IMAGEN[Vertex AI\nImagen API] NLM[Vertex AI\nNotebookLM API] LOGGING[Cloud Audit Logs\n監査・コンプライアンス] BILLING[Cloud Billing\n従量課金管理] ORG[Organization Policy\nガバナンス制御] end HR -->|属性クレームとして付与| ENTRA USER -->|1. ブラウザでアクセス| CONSOLE CONSOLE -->|2. Entra IDにリダイレクト| ENTRA ENTRA -->|3. OIDC IDトークン発行\n(属性クレーム含む)| WIF WIF --> PROVIDER --> STS STS -->|4. GCPアクセストークン発行| IAM IAM -->|5. 属性条件でアクセス許可| VAISTUDIO VAISTUDIO --> GEMINI VAISTUDIO --> IMAGEN VAISTUDIO --> NLM GEMINI --> LOGGING IMAGEN --> LOGGING NLM --> LOGGING GEMINI --> BILLING IMAGEN --> BILLING NLM --> BILLING ORG --> IAM style ENTRA fill:#0078d4,color:#fff style WIF fill:#ea4335,color:#fff style VAISTUDIO fill:#1a73e8,color:#fff style GEMINI fill:#34a853,color:#fff style IMAGEN fill:#fbbc04,color:#000 style NLM fill:#ea4335,color:#fff style IAM fill:#4285f4,color:#fff

アーキテクチャの要点

属性ベースアクセス制御のしくみ:

sequenceDiagram participant U as 社員ブラウザ participant E as Entra ID participant W as Workforce ID Federation participant I as Cloud IAM participant V as Vertex AI Studio U->>E: ログイン要求 E->>E: 部署・役職・属性を\nIDトークンに付与 E-->>U: IDトークン(例: department=engineering, role=developer) U->>W: IDトークン提示 W->>W: 属性マッピング実行\nassert.department → attribute.department W-->>U: GCPアクセストークン U->>V: Vertex AI Studio アクセス V->>I: 権限チェック I->>I: attribute.department == "engineering" → Gemini利用可 I-->>V: 許可 V-->>U: Vertex AI Studio 表示 Note over I: グループ同期なし\nトークン属性のみで制御

主要コンポーネント解説

Workforce Identity Federation とは

Google Workspaceアカウントなしに、外部IdP(Entra IDなど)の認証情報でGCPリソースへアクセスできる仕組みです。Azureでいう「Entra External ID」や「Federated Identity Credentials」に近い概念です。

graph LR subgraph "Azure の類似概念" A1[Federated Identity\nCredentials] -->|外部IdPのトークンを信頼| A2[Azure Resources] end subgraph "GCP の対応機能" B1[Workforce Identity\nFederation] -->|外部IdPのトークンを信頼| B2[GCP Resources] end A1 -.対応.- B1 style A1 fill:#0078d4,color:#fff style B1 fill:#ea4335,color:#fff

グループ同期との比較:

方式仕組み管理コスト
グループ同期(GCDS等)Entraグループ → GCPにコピー → IAM紐付けグループ変更のたびに同期が必要
属性ベース(本記事)EntraのIDトークンクレームをそのままIAM条件に利用HR属性変更が即座に反映、同期不要

属性ベースアクセス制御(ABAC)の設計

GCPのIAMでは principalSet を使って「特定属性値を持つユーザーグループ」にロールを付与できます。

graph TD TOKEN["EntraIDトークン\n{\n sub: user123,\n email: [email protected],\n department: engineering,\n jobTitle: SoftwareEngineer,\n extension_aiLicense: premium\n}"] subgraph "Workforce ID 属性マッピング" MAP1["attribute.department\n= assertion.department"] MAP2["attribute.job_title\n= assertion.jobTitle"] MAP3["attribute.ai_license\n= assertion.extension_aiLicense"] end subgraph "IAMポリシー(属性条件)" P1["principalSet:.../attribute.department/engineering\n→ roles/aiplatform.user"] P2["principalSet:.../attribute.ai_license/premium\n→ roles/aiplatform.admin"] P3["principalSet:.../attribute.department/finance\n→ アクセス拒否(バインディングなし)"] end TOKEN --> MAP1 --> P1 TOKEN --> MAP2 TOKEN --> MAP3 --> P2 TOKEN -.-> P3 style TOKEN fill:#0078d4,color:#fff style P1 fill:#34a853,color:#fff style P2 fill:#fbbc04,color:#000 style P3 fill:#ea4335,color:#fff

標準UI:Vertex AI Studio

スクラッチ開発なしで利用できるGCP標準のAI操作UIです。

機能Vertex AI Studio での対応
Gemini チャットFreeform / Chat モードで対話型プロンプト実行
Gemini API テストコード生成・要約・翻訳などを即座に試行
Imagen 画像生成テキストから画像を生成するUIを標準提供
モデル比較複数Geminiモデルを並べてプロンプト結果を比較
プロンプト管理プロンプトを保存・共有・バージョン管理

詳細構築手順

ステップ1:GCPプロジェクトと組織設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# GCPプロジェクト作成(組織配下に作成を推奨)
gcloud projects create YOUR_PROJECT_ID \
  --name="Enterprise AI Platform" \
  --organization=YOUR_ORG_ID

gcloud config set project YOUR_PROJECT_ID

# 必要APIを有効化
gcloud services enable \
  iam.googleapis.com \
  iamcredentials.googleapis.com \
  sts.googleapis.com \
  aiplatform.googleapis.com \
  cloudresourcemanager.googleapis.com \
  cloudbilling.googleapis.com \
  cloudaudit.googleapis.com \
  secretmanager.googleapis.com

# 請求アカウントを紐付け
gcloud billing projects link YOUR_PROJECT_ID \
  --billing-account=YOUR_BILLING_ACCOUNT_ID

ステップ2:Entra ID アプリ登録と属性クレーム設定

Azure Portal での設定(アプリ登録):

  1. Azure Portal > Microsoft Entra ID > アプリの登録 > 新規登録
  2. 名前: GCP Workforce Identity
  3. サポートされているアカウントの種類: この組織ディレクトリのみ
  4. リダイレクトURIは不要(バックエンド連携のため)

必要なAPIアクセス許可を追加:

APIアクセス許可種類目的
openid委任OpenIDConnect基本認証
email委任メールアドレスクレーム
profile委任基本プロファイル情報
User.Read委任ユーザー属性の読み取り

トークンへの属性クレーム追加(属性ベース制御の核心):

Azure Portal > アプリ登録 > トークン構成 > オプションのクレームを追加

1
2
3
4
5
6
7
8
// IDトークンに追加するクレーム(トークン構成画面で設定)
{
  "idToken": [
    { "name": "email" },
    { "name": "family_name" },
    { "name": "given_name" }
  ]
}

カスタム属性(extension attributes)の設定:

部署や役職などHR属性をトークンに含めるには、Entraのカスタム属性マッピングを使います。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# PowerShell で カスタム属性をトークンに追加
# (オプションのクレームとして department, jobTitle は標準で追加可能)

# カスタムセキュリティ属性またはディレクトリ拡張属性を使用する場合
$TenantId = "YOUR_TENANT_ID"
$AppObjectId = "YOUR_APP_OBJECT_ID"

# ディレクトリ拡張属性の作成(AI利用ライセンス管理用)
Connect-MgGraph -Scopes "Application.ReadWrite.All"

$extensionProperty = New-MgApplicationExtensionProperty `
  -ApplicationId $AppObjectId `
  -Name "aiLicenseTier" `
  -DataType "String" `
  -TargetObjects @("User")

# ユーザーへの属性値設定例
Update-MgUser -UserId "[email protected]" `
  -AdditionalProperties @{
    "extension_APPID_aiLicenseTier" = "premium"
  }

クレームマッピングポリシー(オプション:部署・役職の明示的マッピング):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# クレームマッピングポリシー作成(department, jobTitleをトークンに追加)
$policy = New-MgPolicyClaimMappingPolicy -Definition @(
  '{"ClaimsMappingPolicy": {"Version": 1, "IncludeBasicClaimSet": true,
    "ClaimsSchema": [
      {"Source": "user", "ID": "department", "JwtClaimType": "department"},
      {"Source": "user", "ID": "jobTitle", "JwtClaimType": "jobTitle"},
      {"Source": "user", "ID": "extension_APPID_aiLicenseTier", "JwtClaimType": "aiLicenseTier"}
    ]
  }}'
) -DisplayName "GCP-AI-Claims-Policy" -IsOrganizationDefault $false

# アプリのサービスプリンシパルにポリシーを割り当て
New-MgServicePrincipalClaimMappingPolicyByRef `
  -ServicePrincipalId "YOUR_SP_OBJECT_ID" `
  -OdataId "https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies/$($policy.Id)"

ステップ3:Workforce Identity Federation の設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Workforce Identity Pool 作成
gcloud iam workforce-pools create "entra-workforce-pool" \
  --location="global" \
  --display-name="Microsoft Entra ID Pool" \
  --description="Entra ID federation for GCP AI services" \
  --session-duration="3600s"

# Pool IDを確認
POOL_NAME="locations/global/workforcePools/entra-workforce-pool"

# Entra ID OIDC Provider 登録
# ※ --attribute-mapping が属性ベース制御の核心部分
gcloud iam workforce-pools providers create-oidc "entra-oidc-provider" \
  --workforce-pool="entra-workforce-pool" \
  --location="global" \
  --display-name="Microsoft Entra ID OIDC" \
  --issuer-uri="https://login.microsoftonline.com/YOUR_TENANT_ID/v2.0" \
  --client-id="YOUR_ENTRA_APP_CLIENT_ID" \
  --attribute-mapping="
    google.subject=assertion.sub,
    google.email=assertion.email,
    attribute.department=assertion.department,
    attribute.job_title=assertion.jobTitle,
    attribute.ai_license_tier=assertion.aiLicenseTier,
    attribute.tenant_id=assertion.tid
  " \
  --attribute-condition="assertion.tid == 'YOUR_TENANT_ID'"
  # ↑ 自社テナント以外のトークンを拒否(セキュリティ上重要)

設定内容の解説:

設定項目目的
google.subjectassertion.subGCP内でのユーザー識別子(必須)
google.emailassertion.emailCloud Consoleのメール表示
attribute.departmentassertion.department部署属性(IAM条件で使用)
attribute.job_titleassertion.jobTitle役職属性(IAM条件で使用)
attribute.ai_license_tierassertion.aiLicenseTierAIライセンス区分(カスタム属性)
attribute-conditionテナントID固定他テナントからの不正アクセス防止

ステップ4:IAM 属性ベースポリシーの設定

グループ同期なしで、トークンの属性値に基づいてアクセスを制御します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
PROJECT_ID="YOUR_PROJECT_ID"
POOL_ID="locations/global/workforcePools/entra-workforce-pool"

# =============================================
# 部署別アクセス制御(department 属性ベース)
# =============================================

# エンジニアリング部門:Vertex AI全機能利用可
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="principalSet://iam.googleapis.com/${POOL_ID}/attribute.department/engineering" \
  --role="roles/aiplatform.user"

# データサイエンス部門:Vertex AI利用可(同様)
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="principalSet://iam.googleapis.com/${POOL_ID}/attribute.department/data_science" \
  --role="roles/aiplatform.user"

# =============================================
# ライセンス区分別アクセス制御(カスタム属性ベース)
# =============================================

# プレミアムライセンス:高性能モデル(Gemini Ultra等)利用可
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="principalSet://iam.googleapis.com/${POOL_ID}/attribute.ai_license_tier/premium" \
  --role="roles/aiplatform.user"

# スタンダードライセンス:標準モデルのみ
# ※ Cloud IAM Conditionsで特定リソースのみに制限
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="principalSet://iam.googleapis.com/${POOL_ID}/attribute.ai_license_tier/standard" \
  --role="roles/aiplatform.user" \
  --condition="expression=resource.name.startsWith('projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/gemini-1.5-flash'),title=StandardModel,description=Standard license model restriction"

# =============================================
# 管理者権限:特定属性の組み合わせ
# =============================================

# IT管理者ロール(CEL式で複合条件)
cat > /tmp/admin-policy.yaml << 'EOF'
bindings:
- role: roles/aiplatform.admin
  members:
  - principalSet://iam.googleapis.com/locations/global/workforcePools/entra-workforce-pool/attribute.job_title/IT_Admin
  condition:
    title: IT Admin Condition
    description: AI platform admin access for IT administrators
    expression: attribute.job_title == "IT_Admin" && attribute.department == "it"
EOF
gcloud projects set-iam-policy $PROJECT_ID /tmp/admin-policy.yaml

# =============================================
# 監査・ログ閲覧権限(コンプライアンス担当者向け)
# =============================================
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="principalSet://iam.googleapis.com/${POOL_ID}/attribute.department/compliance" \
  --role="roles/logging.viewer"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="principalSet://iam.googleapis.com/${POOL_ID}/attribute.department/compliance" \
  --role="roles/bigquery.dataViewer"

属性ベース制御のアクセスマップ:

graph TD TOKEN[EntraID トークン\n属性クレーム付き] subgraph "属性値 → IAMロール マッピング" D1["attribute.department\n= engineering"] D2["attribute.department\n= data_science"] D3["attribute.department\n= finance"] D4["attribute.department\n= compliance"] L1["attribute.ai_license_tier\n= premium"] L2["attribute.ai_license_tier\n= standard"] end subgraph "IAMロール(GCPアクセス権)" R1["roles/aiplatform.user\n全Vertex AIサービス利用可"] R2["roles/aiplatform.user\n標準モデルのみ(条件付き)"] R3["アクセス権なし\nVertex AI利用不可"] R4["roles/logging.viewer\n監査ログ閲覧のみ"] end TOKEN --> D1 --> R1 TOKEN --> D2 --> R1 TOKEN --> D3 --> R3 TOKEN --> D4 --> R4 TOKEN --> L1 --> R1 TOKEN --> L2 --> R2 style R1 fill:#34a853,color:#fff style R2 fill:#fbbc04,color:#000 style R3 fill:#ea4335,color:#fff style R4 fill:#9aa0a6,color:#fff

ステップ5:Vertex AI Studio へのアクセス設定(標準UI)

Workforce Identity Federationでは、GCPコンソールへのブラウザログインに専用URLを使用します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# ユーザーに展開するログインURL(ブックマーク・イントラ掲載用)
# 形式: https://console.cloud.google.com/?authuser=workforce:POOL:PROVIDER

POOL="entra-workforce-pool"
PROVIDER="entra-oidc-provider"

echo "GCPコンソールログインURL:"
echo "https://console.cloud.google.com/\
?authuser=workforce%3A${POOL}%3A${PROVIDER}"

echo ""
echo "Vertex AI Studioへの直接URL:"
echo "https://console.cloud.google.com/vertex-ai/studio\
?authuser=workforce%3A${POOL}%3A${PROVIDER}\
&project=${PROJECT_ID}"

エンドユーザーのアクセスフロー:

sequenceDiagram participant U as 社員 participant B as ブラウザ participant C as GCP Console participant E as Entra ID participant V as Vertex AI Studio U->>B: イントラのリンクをクリック\n(ブックマーク済みURL) B->>C: GCP Console アクセス C->>B: Entra ID認証にリダイレクト B->>E: MicrosoftアカウントでSSO Note over E: MFA・条件付きアクセス適用 E->>B: IDトークン発行(属性クレーム含む) B->>C: トークン送信 C->>C: Workforce ID Federation で検証 C-->>B: GCP Console 表示 U->>V: Vertex AI Studio を開く V-->>U: Gemini・Imagen UIが利用可能 Note over U,V: Googleアカウント不要\nグループ同期不要

Vertex AI Studio の主要機能(標準UI):

graph LR STUDIO[Vertex AI Studio\n標準Web UI] STUDIO --> G1[Gemini\nFreeformモード\nテキスト生成・要約・翻訳] STUDIO --> G2[Gemini\nChatモード\n対話型AIアシスタント] STUDIO --> G3[Gemini\nCode生成\nコード補完・レビュー] STUDIO --> I1[Imagen\n画像生成\nテキスト→画像] STUDIO --> I2[Imagen\n画像編集\nインペインティング] STUDIO --> N1[NotebookLM\nAPI経由\nRAGシステム] STUDIO --> P1[プロンプト管理\n保存・共有・バージョン管理] style STUDIO fill:#1a73e8,color:#fff style G1 fill:#34a853,color:#fff style G2 fill:#34a853,color:#fff style G3 fill:#34a853,color:#fff style I1 fill:#fbbc04,color:#000 style I2 fill:#fbbc04,color:#000 style N1 fill:#ea4335,color:#fff

ステップ6:NotebookLM のエンタープライズ利用設定

GWS不使用の構成では、NotebookLM は Vertex AI API 経由で利用します。標準UIとしては Vertex AI Agent Builder を活用します。

1
2
3
4
5
6
7
# NotebookLM API(Vertex AI Gemini APIと統合)を有効化
gcloud services enable \
  discoveryengine.googleapis.com \
  aiplatform.googleapis.com

# Vertex AI Agent Builder でRAG(NotebookLM相当機能)を設定
# Google Cloud Console > Vertex AI > Agent Builder > 新規作成

NotebookLM相当機能の構成オプション:

オプション標準度GWS要否説明
Vertex AI Agent Builder★★★★★不要GCPの標準RAGサービス。管理UIあり
Vertex AI Studio(RAGモード)★★★★☆不要Studio内でドキュメントQAを構成
NotebookLM API(Preview)★★★☆☆不要API経由で利用、UI別途必要
NotebookLM Web UI★★☆☆☆必要GWSライセンス必須のため今回対象外

Vertex AI Agent Builder(推奨NotebookLM代替):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# データストア(社内文書ナレッジ)作成
gcloud alpha discoveryengine datastores create \
  --project=$PROJECT_ID \
  --location=global \
  --collection=default_collection \
  --display-name="社内ナレッジベース" \
  --solution-type=SOLUTION_TYPE_SEARCH \
  --industry-vertical=GENERIC \
  --content-config=CONTENT_REQUIRED

# Search & Conversationアプリ(標準チャットUI)作成
# → Cloud Console UIから作成を推奨(GUIウィザードで設定)
# Console > Vertex AI > Agent Builder > CREATE APP

Agent Builderで作成したチャットUIはそのまま社員に展開でき、スクラッチ開発は不要です。

ステップ7:監査ログとガバナンス設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Data Access 監査ログを有効化(Vertex AI API呼び出しを記録)
cat > /tmp/audit-policy.json << 'EOF'
{
  "auditConfigs": [
    {
      "service": "aiplatform.googleapis.com",
      "auditLogConfigs": [
        {"logType": "DATA_READ"},
        {"logType": "DATA_WRITE"},
        {"logType": "ADMIN_READ"}
      ]
    },
    {
      "service": "iam.googleapis.com",
      "auditLogConfigs": [
        {"logType": "ADMIN_READ"},
        {"logType": "DATA_READ"},
        {"logType": "DATA_WRITE"}
      ]
    }
  ]
}
EOF

gcloud projects set-iam-policy $PROJECT_ID \
  <(gcloud projects get-iam-policy $PROJECT_ID --format=json | \
    jq '.auditConfigs = (.auditConfigs // []) + '"$(cat /tmp/audit-policy.json | jq '.auditConfigs')")

# ログの長期保存(BigQueryエクスポート)
gcloud logging sinks create vertex-ai-audit-sink \
  bigquery.googleapis.com/projects/$PROJECT_ID/datasets/ai_audit_logs \
  --log-filter='protoPayload.serviceName="aiplatform.googleapis.com"' \
  --use-partitioned-tables

# Organization Policy:Vertex AI利用リージョン制限(日本リージョン限定例)
# Console > IAM & Admin > Organization Policies で設定
# 制約: constraints/gcp.resourceLocations
# 許可値: in:asia-northeast1-locations(東京)

ガバナンス構成の全体像:

graph TB subgraph "アクセス制御" WIF2[Workforce Identity\nFederation] ABAC[属性ベース IAM\nグループ同期なし] CA[Entra 条件付きアクセス\nMFA・デバイスコンプライアンス] end subgraph "データガバナンス" AUDIT[Cloud Audit Logs\nData Read/Write] BQ[BigQuery\n長期ログ保存] ALERT[Cloud Monitoring\n異常検知アラート] end subgraph "コスト管理" BUDGET[請求アラート\n予算上限設定] LABEL[リソースラベル\n部署別コスト配賦] QUOTA[API Quotas\n部署別利用上限] end subgraph "ネットワーク制御" VPC_SC[VPC Service Controls\nAPIアクセス境界] ORG2[Organization Policy\nリージョン制限] end WIF2 --> ABAC CA --> WIF2 ABAC --> AUDIT AUDIT --> BQ --> ALERT ABAC --> BUDGET ABAC --> LABEL ABAC --> QUOTA VPC_SC --> ABAC ORG2 --> VPC_SC style WIF2 fill:#ea4335,color:#fff style ABAC fill:#4285f4,color:#fff style CA fill:#0078d4,color:#fff style AUDIT fill:#34a853,color:#fff style VPC_SC fill:#fbbc04,color:#000

エンドユーザー利用手順

社員への展開時に案内する操作手順です。

初回アクセス手順

graph LR S1["① イントラのAIポータル\nページを開く"] --> S2["② 「GCPにサインイン」\nボタンをクリック"] S2 --> S3["③ Microsoftの\nログイン画面が表示\n(社内SSOが起動)"] S3 --> S4["④ 会社のアカウントで\n認証(MFA含む)"] S4 --> S5["⑤ Vertex AI Studio\nが開く"] S5 --> S6["⑥ Gemini / Imagen /\nAgent Builder を利用"] style S1 fill:#e8f0fe,color:#000 style S5 fill:#34a853,color:#fff style S6 fill:#1a73e8,color:#fff

展開用ショートカットURL(イントラに掲載):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
## 社内AI利用ポータル

### Gemini(テキスト生成・チャット)
https://console.cloud.google.com/vertex-ai/studio/freeform
?authuser=workforce%3Aentra-workforce-pool%3Aentra-oidc-provider
&project=YOUR_PROJECT_ID

### Imagen(画像生成)
https://console.cloud.google.com/vertex-ai/studio/vision
?authuser=workforce%3Aentra-workforce-pool%3Aentra-oidc-provider
&project=YOUR_PROJECT_ID

### 社内ナレッジ検索(Agent Builder)
https://console.cloud.google.com/gen-app-builder/apps
?authuser=workforce%3Aentra-workforce-pool%3Aentra-oidc-provider
&project=YOUR_PROJECT_ID

コスト試算

初期構築コスト(インフラ費用)

コンポーネント費用備考
Workforce Identity Federation無料GCPの標準機能
Cloud IAM無料ポリシー管理は無料
Cloud Audit Logs(最初の50GB/月)無料超過分: $0.01/GB
GCPプロジェクト無料利用量ベース課金

運用コスト(API利用量ベース)

サービス料金モデル目安
Gemini 1.5 Flash入力100万トークン: $0.075社員1人/日10会話≒約$0.002/日
Gemini 1.5 Pro入力100万トークン: $1.25高精度が必要な用途向け
Gemini 2.0 Flash入力100万トークン: $0.10最新軽量モデル
Imagen 3画像1枚あたり $0.02〜$0.04解像度・品質により変動
Vertex AI Agent Builder検索1,000クエリ: $2.50ナレッジ検索用途

50名利用の月額試算例

pie title 月額コスト構成(50名・中程度利用) "Gemini API (50名×30日)" : 3000 "Imagen API (月間500枚)" : 1500 "Agent Builder (ナレッジ検索)" : 2000 "Cloud Logging/Storage" : 500 "その他(Networking等)" : 300
想定月額(概算)
50名・軽量利用(Gemini Flash中心)約 $35〜$80/月(¥5,000〜¥12,000)
50名・標準利用(Flash + Agent Builder)約 $150〜$300/月(¥22,000〜¥45,000)
50名・重量利用(Pro + Imagen多用)約 $500〜$1,000/月(¥75,000〜¥150,000)

Google Workspaceとの比較: Workspace Enterprise Plus + Gemini Enterpriseアドオンの場合、50名で約32万〜37万円/月(固定)。従量課金のGCP単体構成は軽量利用であれば大幅に安価になります。


セキュリティ・ガバナンスチェックリスト

Workforce Identity Federation

  • attribute-condition でテナントIDを固定(他テナントのトークンを拒否)
  • session-duration を適切に設定(推奨: 3600s = 1時間)
  • Workforce Poolの利用プロジェクトをOrganization Policyで制限
  • EntraのアプリにIPアドレス・デバイスコンプライアンス条件を追加

IAM属性ベース制御

  • IAMロールは最小権限(roles/aiplatform.userから開始)
  • attribute-condition のCEL式は定期的にレビュー
  • 未使用の principalSet バインディングを四半期毎に棚卸し
  • 管理者権限(roles/aiplatform.admin)は複合条件でのみ付与

データガバナンス

  • Cloud Audit LogsのDATA_READ/DATA_WRITE を必ず有効化
  • BigQueryへのログエクスポートで長期保存(1年以上を推奨)
  • Vertex AIのプロンプト・レスポンスのCloud Storageへのログ記録を検討
  • VPC Service ControlsでVertex AI APIをVPC境界内に制限(高セキュリティ環境)
  • Organization Policyでリージョンをアジアリージョンのみに制限

コスト管理

  • Cloud Billingアラートを予算の80%・100%で設定
  • プロジェクトに部署ラベルを付与してコスト配賦を可視化
  • Quotasで部署ごとのAPI呼び出し上限を設定
  • Recommenderのコスト最適化提案を月次で確認

Entra ID側の属性管理設計

属性ベース制御を安定運用するには、Entra ID側の属性管理が重要です。

graph TB HR[HR システム\n(人事マスタ)] subgraph "Entra ID 属性管理" DEPT[department\n部署コード] TITLE[jobTitle\n役職] EXT[extension_aiLicenseTier\nAIライセンス区分] GRP[グループメンバーシップ\n※GCPには同期しない] end subgraph "GCP IAM" POLICY1["attribute.department/engineering\n→ aiplatform.user"] POLICY2["attribute.ai_license_tier/premium\n→ aiplatform.user(全モデル)"] POLICY3["attribute.department/compliance\n→ logging.viewer"] end HR -->|入社・異動・退職時に自動更新| DEPT HR --> TITLE IT管理者 -->|手動またはLifecycle Workflowsで管理| EXT DEPT --> POLICY1 EXT --> POLICY2 DEPT --> POLICY3 GRP -.GCPには送らない.- POLICY1 style HR fill:#0078d4,color:#fff style DEPT fill:#0078d4,color:#fff style TITLE fill:#0078d4,color:#fff style EXT fill:#0078d4,color:#fff style POLICY1 fill:#34a853,color:#fff style POLICY2 fill:#34a853,color:#fff style POLICY3 fill:#34a853,color:#fff

ライフサイクル管理の自動化(Entra Lifecycle Workflows):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 入社時: AI利用ライセンスを自動付与(Lifecycle Workflow タスク例)
# 入社者のaiLicenseTierを"standard"に設定

# 異動時: 部署属性変更 → GCP側は自動反映(ポリシー変更不要)
Update-MgUser -UserId $newUserId `
  -Department "engineering" `
  -JobTitle "SoftwareEngineer"
# → 次回ログイン時に新しい属性でGCPアクセス権が自動更新

# 退職時: アカウント無効化 → GCPアクセス即時不可
# (トークン発行不可になるため追加設定不要)
Disable-MgUser -UserId $leavingUserId

よくある質問

Q: GWS(Google Workspace)なしでNotebookLMのWeb UIは使えるか?

A: 現時点では使えません。notebooklm.google.com はGoogleアカウントまたはGWSアカウントが必要です。GCP単体構成でのNotebookLM相当機能には、Vertex AI Agent Builder(標準Web UIあり)を活用してください。NotebookLM APIのGA後は、GCP単体でのAPI利用が本命になります。

Q: 属性ベース制御とグループ同期、どちらが推奨か?

A: エンタープライズ環境では属性ベース制御を推奨します。グループ同期はGCPとEntra IDの間でグループ管理が二重になり、退職者のアクセス残存リスクもあります。属性ベースではEntraのアカウント無効化でGCPアクセスも即座に失効します。

Q: Entraの条件付きアクセスポリシー(MFA・デバイスコンプライアンス等)は適用されるか?

A: はい。Workforce Identity Federation はEntraへのOIDC認証経由のため、Entraの条件付きアクセスポリシーが完全に適用されます。準拠デバイスのみ許可、特定ネットワーク外でのMFA必須なども有効です。

Q: GCPプロジェクトを複数に分けるべきか?

A: 部署ごとにプロジェクトを分けることでコスト配賦・ガバナンスが明確になります。ただし初期は1プロジェクトで開始し、ラベルでコスト管理する方がシンプルです。本番規模になったらフォルダ構成で分割を検討してください。

Q: Vertex AI Studioで作成したプロンプトは社内で共有できるか?

A: はい。Vertex AI Studioのプロンプト保存機能でGCSに保存し、チームで共有できます。ただしアクセス制御はCloud IAMで管理されます。

Q: 他のGCPサービス(BigQuery、Cloud Storageなど)にも同じWorkforce ID設定でアクセスできるか?

A: はい。一度Workforce Identity Poolを設定すれば、同じGCPプロジェクト内の全サービスにIAMポリシーで権限付与できます。AIサービス以外にもBigQueryのデータ分析環境など、GCPの全サービスにEntra IDで統一SSO化できます。


まとめ:構成の優位性

graph LR subgraph "本記事の構成" A1[Entra ID\n単一IdP] A2[Workforce ID\nFederation] A3[属性ベースIAM\nグループ同期なし] A4[Vertex AI Studio\n標準UI] A5[従量課金\n固定コストなし] end A1 --> A2 --> A3 --> A4 A3 --> A5 style A1 fill:#0078d4,color:#fff style A2 fill:#ea4335,color:#fff style A3 fill:#34a853,color:#fff style A4 fill:#1a73e8,color:#fff style A5 fill:#fbbc04,color:#000
優位性詳細
ID管理の一元化Entra IDで全サービスのSSO・MFA・条件付きアクセスを統一管理
同期レス運用グループ・ユーザーのGCP同期が不要。Entra属性変更が即座に反映
GWSコスト不要Workspaceライセンス費用ゼロ。使った分だけのGCP従量課金
スクラッチ開発ゼロVertex AI Studio・Agent Builder という標準UIをそのまま活用
スケーラブル利用者増加時もGCPの属性ポリシー変更のみ。ユーザー登録作業不要

参考リンク