キー権限の追加

OCI生成AI APIキーを使用するには、テナンシ・レベルまたはコンパートメント・レベルのIAMポリシーを介して権限を付与します。

これらのポリシーは、any-userをサブジェクトとして使用して、テナンシ内の認証されたプリンシパル(ユーザー、インスタンス・プリンシパルおよびリソース・プリンシパルを含む)へのアクセスを許可しますが、WHERE句は、プリンシパル・タイプがgenerativeaiapikey (APIキーに一致)であるリクエストに制限します。このポリシーにより、生成AIサービスは、より広範なアクセスなしでキーを使用してAPIコールを認証および処理できます。

より詳細な制御を行うには、any-usergroup <group-name>に置き換えて、ポリシーを特定のグループのメンバーに制限します(たとえば、そのグループのユーザーのみがキーでAPIを呼び出すことを許可します)。

スコープ(コンパートメントまたはテナンシ)、粒度(特定のキーと比較した任意のキー)、モデル制限または操作タイプ(チャットのみなど)別にポリシーをカスタマイズします。わかりやすくするためにポリシー・ビルダー・ツールを使用します。コンパートメント内のすべてのキーまたは特定のモデルのすべてのキーを認可する場合は、キーを生成する前にポリシーを作成し、特定のキーに制限されている場合は、最初にキーを作成します(OCIDを取得するため)。

広範な権限: 任意のAPIキーの認可

OCIDを必要としない場合、このオプションは、キーの作成前または作成後の一般的なアクセスに最適です(キーを使用する前にこのポリシーを追加してください)。

特定のコンパートメント内
allow any-user to use generative-ai-family 
in compartment <compartment-name> 
where ALL {request.principal.type='generativeaiapikey'}
テナンシ全体
allow any-user to use generative-ai-family 
in compartment <compartment-name>
where ALL {request.principal.type='generativeaiapikey', 
target.model.id in('<model-1>', 'model-2')
}

特定の権限: 単一のAPIキーの認可

最初にキーを生成し、そのOCID (ocid1.generativeaiapikey.<region-realm>.<region-name>で始まる)を取得してから、ポリシーを適用します。OCIDの検索については、APIキーの詳細の取得を参照してください。

特定のコンパートメント内
allow any-user to use generative-ai-family 
in compartment <compartment-name> 
where ALL {request.principal.type='generativeaiapikey', 
request.principal.id='<your-api-key-OCID>'}
テナンシ全体
allow any-user to use generative-ai-family in tenancy 
where ALL {request.principal.type='generativeaiapikey', 
request.principal.id='<your-api-key-OCID>'}

制限された権限: モデルまたは操作への制限

セキュリティを強化するには、特定のモデルまたはエンドポイントへのアクセスを絞り込みます(たとえば、xAI Grok 4の場合はxai.grok-4のように、モデル・カードまたはエンドポイントIDでモデルIDを検索します)。サポートされているモデルを参照してください)。フル・アクセスの場合はgenerative-ai-familyを使用し、チャット・エンドポイントのみに制限する場合はgenerative-ai-chatを使用します(埋込み、再ランク、モデル更新またはAIクラスタを除く)。「生成AIへのアクセス」を参照してください。

特定のモデルまたはエンドポイントのコンパートメント内の任意のキー(完全な読取りおよび更新アクセス)
allow any-user to use generative-ai-family 
in compartment <compartment-name>
where ALL {request.principal.type='generativeaiapikey', 
target.model.id in('<model-1>', 'model-2')
}
特定のモデルまたはエンドポイントのコンパートメント内の任意のキー(チャットのみ):
allow any-user to use generative-ai-chat 
in compartment <compartment-name>
where ALL {request.principal.type='generativeaiapikey', 
target.model.id in('<model-1>', 'model-2')
}