OpenAI

OpenAI / GCP EKM 統合手順

GCP をプロビジョニングし、EKM をアクティブ化するための詳細な手順

更新日: 2 days ago

概要

エンタープライズキー管理(EKM)を使用すると、お客様が管理するマスターキーを使用して、OpenAI がデータを暗号化できます。このドキュメントでは、OpenAI に KMS での限定的な権限を付与するための GCP アカウントを設定する方法について説明します。

Diagram of OpenAI GCP EKM integration flow using STS token exchange and KMS encrypt or decrypt requests

手順

1. OpenAI 用のフェデレーション ID を作成する

OpenAI は、OpenAI が所有する GCP アカウントから以下のような ID トークンを発行します。

  • azp と sub は、GCP における OpenAI のサービスアカウント ID です。

  • aud は OpenAI の組織 ID です。OpenAI のプロジェクト ID などの別の対象を選択することもできます。以下の手順を参照してください。

{
  "aud": "org-xxxx",
  "azp": "105900137572174660365",
  "exp": 1747876928,
  "iat": 1747873328,
  "iss": "https://accounts.google.com",
  "sub": "105900137572174660365"
}

この手順では、ID トークンに含まれるクレームを認識し、その ID トークンが指定された場合に GCP STS がアクセストークンを発行できるようにします。

  1. IAM と管理 -> ワークロードアイデンティティフェデレーション」に移動し、「プールを作成」をクリックします。

    GCP IAM & Admin with Workload Identity Federation selected
  2. アイデンティティプールを作成」の手順で、「プール名」に任意の名前を入力します。

    1. これは後に OpenAI に登録する必要があるため、覚えておいてください。

  3. プールにプロバイダーを追加」の手順では、以下を実行します。

    1. 「プロバイダーを選択」で「OpenID Connect(OIDC)」を選択します。

    2. プロバイダー名」には任意の名前を入力します。

    3. 発行者(URL)」セクションに「https://accounts.google.com」を入力します。

    4. オーディエンス」セクション:

      1. 許可されているオーディエンス」を選択します。

      2. OpenAI がトークンを渡す際に指定するオーディエンスを入力します。

        1. ChatGPT または API の場合:「OpenAI API 組織 IDorg-xxx)」を指定できます。

        2. API の場合:より細かく設定するために特定の「API プロジェクト ID」を指定できます。

          GCP Workload Identity Provider edit page with Allowed audiences selected and Audience 1 entered
    5. 属性マッピング」セクション:

      1. google.subject」に「assertion.sub」を入力します。

        Google Cloud attribute mapping with Google 1 google.subject mapped to OIDC 1 assertion.sub
    6. 属性条件」セクション:

      1. assertion.sub == "105900137572174660365" を指定します。

  4. これで、 https://console.cloud.google.com/iam-admin/workload-identity-pools ページに「ワークロードアイデンティティプール」と「ワークロードアイデンティティプロバイダー」が表示されるはずです。

    1. ワークロードアイデンティティプール ID

      GCP Workload Identity Pools page highlighting the provider ID value needed for OpenAI EKM setup
    2. ワークロードアイデンティティプロバイダー ID

      GCP Workload Identity Provider edit page with the provider ID field highlighted

2. KMS が有効になっていることを確認する

https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview にアクセスし、KMS を有効にします。OpenAI のフェデレーション ID を認識した GCP プロジェクトと同じ GCP プロジェクトに KMS を作成する必要はありません。ただし、プロジェクトが異なる場合は、少なくとも両方のプロジェクトで KMS 製品を有効化する必要があります。

3. 新規 KMS キーを作成する

  1. セキュリティ -> データ保護 -> キー管理」に移動します。

  2. 概要」タブで「キーリングを作成」をクリックします。

    1. キーリングには任意の名前を設定します。

    2. 「目的とアルゴリズム」には「対称暗号化/復号化」を選択します。

      GCP Key Management Overview page with the Create Key Ring button highlighted
    3. キーリングを作成すると、「キーリング」タブに表示されます。キーリングをクリックします。

    4. キーリングの詳細で、「キーを作成」をクリックします。

      1. キーには任意の名前を設定します。

4. KMS での暗号化/復号化用の制限付きロールを作成する

  1. 「IAM と管理 -> ロール -> ロールを作成」に移動します。

  2. ロール名と ID には任意の名前を入力します。

  3. 「権限を追加」をクリックし、次に以下を追加します。

    1. cloudkms.cryptoKeyVersions.useToDecrypt

    2. cloudkms.cryptoKeyVersions.useToEncrypt

5. 暗号化/復号化用の制限付き KMS ロールに OpenAI のフェデレーション ID を割り当てる

  1. セキュリティ -> データ保護 -> キー管理」に移動します。

  2. キーリング名」をクリックしてから「キー名」をクリックし、キーの詳細ページに移動します。

    1. ページが存在しない場合は、「KMS を作成する」セクションに戻ります。

  3. 「権限」タブをクリックし、次に「アクセスを許可」ボタンをクリックします。

    Google Cloud KMS key details page with Permissions tab open and Grant Access highlighted
  4. 先ほど作成したカスタムロールに OpenAI のフェデレーション ID を割り当てます。

    1. プリンシパルを追加」セクションには、principal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365 と入力します。

      1. ここでの YOUR_GCP_PROJECT_NUMBER は、YOUR_GCP_WORKLOAD_IDENTITY_POOL を作成することで OpenAI のフェデレーション ID を認識したプロジェクトです。KMS が存在する同じプロジェクト内に配置することもできますが、必須ではありません。

      2. プロジェクトが異なる場合は、https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview にアクセスして、少なくとももう一方のプロジェクトで KMS が有効になっていることを確認してください。

    2. ロールの割り当て」セクションで、制限付き EKM 権限用に前の手順で作成したカスタムロールを選択します。

6. 独自のセキュリティ慣行に沿って追加の制限を適用する

上記は、OpenAI が EKM を設定するために必要な最小限の情報です。OpenAI がお客様の KMS で暗号化および復号化操作を呼び出せる限り、お客様独自の社内セキュリティ慣行に沿って、追加のキーポリシーや制限を自由に適用できます。以下で説明する OpenAI のキー登録エンドポイントを呼び出すと、設定を検証します。

上記の手順を完了した後

ChatGPT Enterprise

OpenAI の担当者にご連絡いただき、以下の内容を共有してください。

  • "workload_identity_project_number": "123456789012"

    • OpenAI のワークロードアイデンティティを登録した12桁の GCP プロジェクト番号

  • "workload_identity_pool_id": "openai-azure"

    • OpenAI 用に登録したワークロードアイデンティティプロバイダーを含むプール

  • "workload_identity_provider_id": "openai-ekm-service-role"

    • OpenAI 用に登録したワークロードアイデンティティプロバイダー

  • "kms_project_id": "adjective-noun-12345"

    • KMS が存在する GCP プロジェクトの名前

  • "kms_key_name": "openai-kms-key"

    • キー管理システムのマスターキーの名前

  • "kms_key_ring_name": "openai-kms-key-ring"

    • お客様が管理するマスターキーを含むキー管理システムのキーリング

  • "kms_key_location": "us-east1"

    • キー管理システムのマスターキーが格納されているリージョン

お客様の ChatGPT 組織またはワークスペース用に EKM を有効化します。

API

OpenAI に外部キーを登録する

この API リファレンス「Management API の外部キー」に記載された手順に従ってください。

  • まず、OpenAI の組織レベルで外部キーを登録します。すると、外部キー ID が生成されます。

  • このステップでは、GCP 上で KMS に認証できるかどうかを確認することで、設定の妥当性を検証します。

  • この作業によって OpenAI プロジェクトに EKM が追加されることはありません。

curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys" \
-d '{
   "type": "gcp",
   "name": "GCP EKM Config",
   "workload_identity_project_number": "123456789012",
   "workload_identity_pool_id": "openai-azure",
   "workload_identity_provider_id": "openai-ekm-service-role",
   "audience": <your org id or project id>,
   "kms_project_id": "adjective-noun-12345",
   "kms_key_name": "openai-kms-key",
   "kms_key_ring_name": "openai-kms-key-ring",
   "kms_key_location": "us-east1"
}'

次に、外部キーに関連付けられた OpenAI プロジェクトを作成します。この後、プロジェクトで EKM が有効になります。

curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/projects" \
-d '{
   "name": "Some Project",

   "external_key_id": "extkey_xxxx"

}'

この記事は役に立ちましたか?