セキュリティ・ポリシーの例
ポリシーを使用して、最小限の権限でサービス・レベル管理者を作成する方法、管理者がテナンシ管理者グループ・メンバーシップを変更する機能を制限する方法、管理者がセキュリティ・ポリシーを削除または更新できないようにする方法、およびユーザーがユーザー資格証明にアクセスまたは変更できないようにする方法について学習します。
一般的なIAMセキュリティ・ポリシーの例は、共通ポリシーを参照してください。この後のすべての例で、ポリシーの対象範囲はテナンシです。ただし、コンパートメント名を指定することによって、テナンシ内の特定のコンパートメントを対象範囲に絞り込むことができます。
最小限の権限を持つサービスレベル管理者を作成
最小限の権限というセキュリティ原則を実装するにために、テナンシのサービスレベル管理者を作成して、管理アクセスの対象範囲をさらに絞り込むことができます。つまり、サービスレベルの管理者は、特定のサービスのリソースしか管理できません。たとえば、ネットワーク管理者は、VCNリソースに対してのみ管理アクセス権(manage
)が必要であり、他のリソースには必要ありません。次の例は、ブロック・ストレージ(VolumeAdmins
)、VCN (NetworkAdmins
)、データベース(DBAdmins
)およびオブジェクト・ストレージ(StorageAdmins
)の管理者グループを作成する方法を示しています。
Allow group TenancyAdmins to manage all-resources in tenancy
Allow group VolumeAdmins to manage volume-family in tenancy
Allow group NetworkAdmins to manage virtual-network-family in tenancy
Allow group StorageAdmins to manage object-family in tenancy
Allow group DBAdmins to manage database-family in tenancy
セキュリティ・ポリシーを特定のコンパートメントにさらに限定できます。たとえば、企業のHR部門は、コンパートメントHR-compartment
内のリソースを管理するためにグループHRAdmins
を作成できます。HRNetworkAdmins
グループは、HR-compartment
コンパートメント内のVCNリソースのみの管理アクセス権を保持します。
Allow group HRAdmins to manage all-resources in compartment HR-compartment
Allow group HRNetworkAdmins to manage virtual-network-family in compartment HR-compartment
コンプライアンス監査者には、クラウド・リソースを調査し、ポリシー違反を検証するタスクがあります。次のポリシーによって、InternalAuditors
グループはテナンシ内のすべてのリソースの調査(list
)が許可されます。
Allow group InternalAuditors to inspect all-resources in tenancy
テナンシのユーザーとグループのみを調査するように監査者を制限する場合は、次のポリシーを使用してグループUserAuditors
を作成できます:
Allow group UserAuditors to inspect users in tenancy
Allow group UserAuditors to inspect groups in tenancy
テナンシ内のVCNファイアウォールのみを検査できる監査者グループを作成する場合は、次のポリシーを使用します:
Allow group FirewallAuditors to inspect security-lists in tenancy
すべてのポリシーの例で、ポリシーにCompartment <name>
(<name>はコンパートメント名)を指定することで、ポリシーの対象をコンパートメントに限定できます。
テナンシ管理者グループのメンバーシップの変更権限を制限
グループAdministrators
のメンバーは、テナンシ内のすべてのリソースを管理できます。Administrators
グループのメンバーシップは、そのグループ内のユーザーによって制御されます。通常、テナンシでのユーザーの作成や追加を行うグループがあると便利ですが、そのようなグループがAdministrators
グループのメンバーシップに変更を加えることは制限してください。次の例では、このためにUserAdmins
グループを作成します。
Allow group UserAdmins to inspect users in tenancy
Allow group UserAdmins to inspect groups in tenancy
Allow group UserAdmins to use users in tenancy
where target.group.name!='Administrators'
Allow group UserAdmins to use groups in tenancy
where target.group.name!='Administrators'
動詞と条件(3番目と4番目のポリシー・ステートメント)を一緒に使用して、UserAdmins
がAPI (UpdateUser
、UpdateGroup
)を使用して、Administrators
グループを除くテナンシ内のすべてのグループにユーザーとグループを追加できるようにします。ただし、target.group.name!='Administrators
'はlist
とget
のAPI (ListUsers
、GetUser
、ListGroups
およびGetGroup
)には関連していないため、これらのAPIは失敗します。そのため、UserAdmins
がユーザーおよびグループ・メンバーシップ情報を取得できるようにするには、inspect
動詞(1番目と2番目のポリシー・ステートメント)を明示的に追加する必要があります。
セキュリティ・ポリシーの削除または更新の防止
次の例では、PolicyAdmins
グループを作成して、テナンシ管理者によって作成されたセキュリティ・ポリシーの作成とリスト表示を行えるようにしますが、削除や更新はできません。
Allow group PolicyAdmins to use policies in tenancy
Allow group PolicyAdmins to manage policies in tenancy
where request.permission='POLICY_CREATE'
このセキュリティ・ポリシー・ステートメントでは、POLICY_CREATE
権限のみが明示的に許可されます。POLICY_DELETE
およびPOLICY_UPDATE
権限は許可されません。
管理者によるユーザー資格証明へのアクセスまたは変更の防止
コンプライアンス要件によっては、職務の分離(特にユーザー資格証明の管理業務とテナンシ管理の分離)が求められます。このケースでは、TenancyAdmins
とCredentialAdmins
という2つの管理グループを作成して、TenancyAdmins
がユーザー資格証明管理を除くすべてのテナンシ管理業務を実行し、CredentialAdmins
がユーザー資格証明を管理するようにします。TenancyAdmins
は、ユーザー資格証明のリスト表示、更新または削除を除くすべてのAPIにアクセスできます。CredentialAdmins
は、ユーザー資格証明のみを管理できます。
Allow group TenancyAdmins to manage all resources in tenancy
where all {request.operation!='ListApiKeys',
request.operation!='ListAuthTokens',
request.operation!='ListCustomerSecretKeys',
request.operation!='UploadApiKey',
request.operation!='DeleteApiKey',
request.operation!='UpdateAuthToken',
request.operation!='CreateAuthToken',
request.operation!='DeleteAuthToken',
request.operation!='CreateSecretKey',
request.operation!='UpdateCustomerSecretKey',
request.operation!='DeleteCustomerSecretKey'}
Allow group CredentialAdmins to manage users in tenancy
where any {request.operation='ListApiKeys',
request.operation='ListAuthTokens',
request.operation='ListCustomerSecretKeys',
request.operation='UploadApiKey',
request.operation='DeleteApiKey',
request.operation='UpdateAuthToken',
request.operation='CreateAuthToken',
request.operation='DeleteAuthToken',
request.operation='CreateSecretKey',
request.operation='UpdateCustomerSecretKey',
request.operation='DeleteCustomerSecretKey'}