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

手順
1. 新規 KMS キーを作成する
KMS -> 顧客管理キーと移動し、次に「キーの作成」をクリックします
対称暗号化アルゴリズムを選択します
キーを作成したら、その ARN を控えておいてください。サポートされる形式には arn:aws:kms:<region>:<account_number>:key/<uuid>, ...:key/mrk-*, or ...:alias/<alias_name>
が含まれます。
2. KMS キーへのアクセスを制限するためのカスタムポリシーを作成する
IAM -> ポリシー と移動し、次に「ポリシーの作成」をクリックします
「許可の指定」ステップで JSON を選択し、ポリシーに KMS へのアクセスアクションを付与するために、以下の内容を入力します。YOUR_KMS_ARN を、作成したキーの ARN に必ず置き換えてください。

{
"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 プリンシパルが制限付きロールを引き受けることができることを認識します。
IAM -> ロール と進み、次に「ロールを作成」をクリックします。
「信頼できるエンティティを選択」のステップで、「カスタム信頼ポリシー」 を選択します

OpenAI の AWS プリンシパルへのアクセスを許可するために、以下をカスタム信頼ポリシーに入力します。
このプリンシパルは OpenAI の AWS プリンシパルです - arn:aws:iam::790389265272:role/EnterpriseKeyManagement
AssumeRole プロセス中に OpenAI が渡す Externald を指定してください。
ChatGPT または API では、ワークスペースに関連付けられた 組織 ID(org-xxx) を使用できます - https://platform.api.openai.org/settings/organization/general
API では、より細かく設定するために特定の API プロジェクト ID を指定できます
{
"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 ポリシーのポリシー名を検索します。ポリシー名の横にあるチェックボックスをクリックし、次に「次へ」をクリックします。

「名前、確認、および作成」セクションで、いずれかのロール名を選択します。
4. お客様独自のセキュリティ慣行に沿って、追加の制限を適用します。
上記は、OpenAI が EKM を設定するために必要な必要な最小限の情報です。OpenAI がお客様の KMS で暗号化および復号化操作を呼び出せる限り、お客様独自の社内セキュリティ慣行に沿って、追加のキーポリシーや制限を自由に適用できます。以下で説明する OpenAI のキー登録エンドポイントを呼び出すと、設定を検証します。
上記の手順を完了した後
ChatGPT Enterprise
OpenAI の担当者にご連絡いただき、以下の内容を共有してください。
"role_arn": "arn:aws:iam::<YOUR_AWS_ACCOUNT_NUMBER>:role/<YOUR_ROLE>",
OpenAI がクラウド環境で引き受ける Role ARN
"kms_arn": "arn:aws:kms:<REGION>:<YOUR_AWS_ACCOUNT_NUMBER>:key/<UUID>"
お客様が管理するマスターキーのキー管理システム ARN
お客様の ChatGPT 組織またはワークスペース用に EKM を有効化します。
API
OpenAI に外部キーを登録する
この API リファレンス Management API の外部キーに記載された手順に従ってください
まず、OpenAI の組織レベルで外部キーを登録します。すると、外部キー ID が生成されます。
このステップでは、入力が有効であること、および 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": "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"
}'
