OpenAI

OpenAI / AWS EKM 連携手順

AWS をプロビジョニングし、EKM を有効化する詳細な手順

更新日: 8 days ago

概要

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

AWS EKM integration flow between OpenAI EKM Service, your STS, your KMS, and your master KEK

手順

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

  1. KMS -> 顧客管理キーと移動し、次に「キーの作成」をクリックします

  2. 対称暗号化アルゴリズムを選択します。

  3. キーを作成したら、その ARN を控えておいてください。サポートされる形式には arn:aws:kms:<region>:<account_number>:key/<uuid>...:key/mrk-*、または ...:alias/<alias_name> が含まれます。

AWS KMS customer managed key details page with key ID and ARN for test-kms

2. KMS キーへのアクセスを制限するためのカスタムポリシーを作成する

  1. IAM -> ポリシー と移動し、次に「ポリシーの作成」をクリックします。

  2. 「許可の指定」ステップで JSON を選択し、ポリシーに KMS へのアクセスアクションを付与するために、以下の内容を入力します。YOUR_KMS_ARN を、作成したキーの ARN に必ず置き換えてください。

AWS IAM Create policy page with Specify permissions open and the JSON policy editor selected
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowEncryptDecrypt",
            "Effect": "Allow",
            "Action": [

                "kms:Decrypt",
                "kms:Encrypt"

            ],
            "Resource": <YOUR_KMS_ARN>
        }
    ]
}

3. OpenAI が引き受ける IAM ロール を作成し、KMS へのアクセスを制限したポリシーに割り当てます。

OpenAI は、OpenAI が所有する AWS アカウントから AssumeRole を呼び出します。このステップでは、お客様の KMS にアクセスするために、OpenAI の AWS プリンシパルが制限付きロールを引き受けられるようにします。

  1. IAM -> ロール と進み、次に「ロールを作成」をクリックします。

  2. 「信頼できるエンティティを選択」のステップで、「カスタム信頼ポリシー」を選択します。

AWS IAM Select trusted entity screen with Custom trust policy selected

OpenAI の AWS プリンシパルへのアクセスを許可するために、以下をカスタム信頼ポリシーに入力します。

  • このプリンシパルは OpenAI の AWS プリンシパルです。arn:aws:iam::790389265272:role/EnterpriseKeyManagement

  • AssumeRole プロセス中に OpenAI が渡す ExternalId を指定してください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::790389265272:role/EnterpriseKeyManagement"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "sts:ExternalId": [
                         <YOUR_OPENAI_ORGANIZATION_ID>,
                     ]
                }
            }
        }
    ]
}

次に、「許可の追加」ステップで、前のステップで作成した IAM ポリシーのポリシー名を検索します。ポリシー名の横にあるチェックボックスをクリックし、次に「次へ」をクリックします。

AWS IAM Add permissions page filtered to customer managed KMS policies with test-allow-kms-access selected

最後に、「名前、確認、および作成」セクションで、いずれかのロール名を選択します。

4. お客様独自のセキュリティ慣行に沿って、追加の制限を適用します。

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

上記の手順を完了した後

ChatGPT Enterprise

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

  • "role_arn": "arn:aws:iam::<YOUR_AWS_ACCOUNT_NUMBER>:role/<YOUR_ROLE>"

    • OpenAI がクラウド環境で引き受けるロール ARN。

  • "kms_arn": "arn:aws:kms:<REGION>:<YOUR_AWS_ACCOUNT_NUMBER>:key/<UUID>"

    • お客様が管理するマスターキーのキー管理システム ARN。

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

API

OpenAI に外部キーを登録する

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

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

  2. このステップでは、入力が有効であること、および KMS に対して認証できることを検証します。

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

curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \

"https://api.openai.com/v1/organization/external_keys"\
-d '{
  "type": "aws",
  "name": "AWS EKM Config",
  "role_arn": "arn:aws:iam::<YOUR_AWS_ACCOUNT_NUMBER>:role/<YOUR_ROLE>",
  "kms_arn": "arn:aws:kms:<REGION>:<YOUR_AWS_ACCOUNT_NUMBER>:key/<UUID>",
  "external_id": <your org id or project id>
}'

次に、外部キーに関連付けられた OpenAI プロジェクトを作成します。この後、プロジェクトで EKM が有効になります。この API 呼び出しのレスポンスのボディ(本文)により、プロジェクト ID (proj_xxx) が与えられます。

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"
}'

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