権限または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操作に必要な権限の表によると、ListGroupsGetGroupの両方には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'}