権限またはAPI操作を使用したアクセスのスコープ設定
ポリシー・ステートメントで、条件と権限またはAPI操作を使用して、特定の動詞で許可されるアクセス範囲を減らすことができます。
たとえば、グループXYZがグループのリスト、取得、作成または更新(説明の変更)を行うが、グループの削除は行わないとします。グループをリスト、取得、作成および更新するには、動詞およびリソース・タイプとしてmanage groups
を含むポリシーが必要です。動詞とリソース・タイプの組合せの詳細の表によると、対象の権限は次のとおりです。
- GROUP_INSPECT
- GROUP_UPDATE
- GROUP_CREATE
- GROUP_DELETE
必要な権限のみにアクセスを制限するには、許可する権限を明示的に指定する条件を追加します:
Allow group XYZ to manage groups in tenancy
where any {request.permission='GROUP_INSPECT',
request.permission='GROUP_CREATE',
request.permission='GROUP_UPDATE'}
かわりに、GROUP_DELETEを除くすべての権限が許可されるポリシーがあります。
Allow group XYZ to manage groups in tenancy where request.permission != 'GROUP_DELETE'
ただし、この方法では、サービスによって将来追加されるすべての新しい権限が、グループXYZに自動的に付与されることに注意してください。GROUP_DELETEのみが省略されます。
別の方法は、特定のAPI操作に基づいて条件を記述することです。各API操作に必要な権限の表によると、ListGroups
とGetGroup
の両方にはGROUP_INSPECT権限のみが必要です。ポリシーは次のとおりです:
Allow group XYZ to manage groups in tenancy
where any {request.operation='ListGroups',
request.operation='GetGroup',
request.operation='CreateGroup',
request.operation='UpdateGroup'}
条件にAPI操作ではなく権限を使用すると有益です。将来、前述の権限ベースのポリシーにリストされているいずれかの権限を必要とする新しいAPI操作が追加された場合、そのポリシーによって、XYZグループのその新しいAPI操作へのアクセスがすでに制御されています。
ただし、API操作に基づく条件も指定することで、ユーザーの権限へのアクセスをさらにスコープ設定できることに注意してください。たとえば、GROUP_INSPECTへのアクセス権をユーザーに付与し、その後ListGroups
のみに絞り込むことができます。
Allow group XYZ to manage groups in tenancy
where all {request.permission='GROUP_INSPECT',
request.operation='ListGroups'}