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

手順
1. 新規 KMS キーを作成する
KMS -> 顧客管理キーと移動し、次に「キーの作成」をクリックします
対称暗号化アルゴリズムを選択します。
キーを作成したら、その ARN を控えておいてください。サポートされる形式には
arn:aws:kms:<region>:<account_number>:key/<uuid>、...:key/mrk-*、または...: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 が渡す ExternalId を指定してください。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 がクラウド環境で引き受けるロール 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"
}'