リソース・スケジューラのIAMポリシー
IAMポリシーを使用して、リソース・スケジューラへのセキュアなアクセスを確保し、リソース・スケジューラ・スケジュールおよびその他の機能を作成および管理する方法について学習します。
認証、認可および必要なポリシー
リソース・スケジューラは、IAMポリシーを使用して、リソース・スケジューラへのセキュアなアクセス、スケジュールの作成、およびスケジュールを使用したリソースの管理を行います。Oracle Cloud Infrastructureの各サービスは、すべてのインタフェース(コンソール、SDKまたはCLI、およびREST API)で、認証および認可のためにIAMと統合されます。
組織内のユーザーまたは別の管理者は、サービスやリソースへのアクセスのレベルとタイプを制御するグループ、コンパートメントおよびポリシーを設定する必要があります。これらのポリシーにより、新規ユーザーの作成、クラウド・ネットワークの作成と管理、インスタンスの作成、バケットの作成、オブジェクトのダウンロードなどを実行できるユーザーが制御されます。詳細は、アイデンティティ・ドメインの管理を参照してください。異なる各サービスに対するポリシーの記述の詳細は、ポリシー・リファレンスを参照してください、
必要なポリシー
スケジュールを作成および管理するには、スケジュールを作成および変更する権限をユーザーに付与するポリシーを作成する必要があります。また、リソースを管理するためのスケジュール権限を付与するポリシーを作成する必要があります。
次の例に、これらのポリシーの仕組みを示します。
例1.このポリシーは、スケジュールを作成および変更する権限をユーザーに付与します
ResourceScheduleUsersグループにテナンシのリソース・スケジュールの表示およびリストを許可します。
Allow ResourceScheduleUsers to inspect resource-schedule in tenancy
例2
このポリシーは、ターゲット・リソースに対してアクションを実行するリソース・スケジュール権限を付与します。
リソース・スケジュールが作成されると、デフォルトでは、ターゲット・リソースに対してアクションを実行する権限がないため、リソース・スケジュールに権限を付与する必要があります。
次の例では、任意のユーザーがターゲット・リソースに対してアクションを実行できます。
Allow any-user to manage <resource_type (instance, database, and others)> in compartment id <target_compartment_ocid> where all {request.principal.type='resourceschedule',request.principal.id='ocid_of_resourceschedule'}
企業が所有するOracle Cloud Infrastructureリソースを使用する必要がある管理者以外のユーザーは、管理者に連絡してユーザーIDを設定する必要があります。管理者は、これらのユーザーがアクセス権を持つコンパートメントを確認できます。
リソース・スケジューラAPI操作を使用するには、IAMポリシーで認可されている必要があります。権限がない場合は、管理者に連絡してください。ユーザーにアクセス権を付与するポリシーを記述する必要がある管理者の場合は、アイデンティティ・ドメインの管理を参照してください
リソース・タイプ
次の表に、リソース・スケジューラで使用されるリソース・タイプと、リソース・スケジューラを使用するために必要な権限を示します。
リソース・タイプ | 権限 |
---|---|
リソース- スケジュール |
|
リソース- スケジュール- 作業リクエスト |
|
サポートされる変数
リソーススケジューラでは、すべての一般的な変数がサポートされます。
詳細は、すべてのリクエストの一般変数および次の表に示す変数を参照してください。
命名規約
変数は小文字で、ハイフン区切りです。
target.tag-namespace.name # "name"indicates a unique key
target.display-name # "display-name"indicates a non-unique description
「すべてのリクエストの一般的な変数」および次の表に示す変数を参照してください。
変数タイプとソース
タイプ | タイプの説明 |
---|---|
文字列。 | 自由形式のテキスト |
リスト(タイプ) | エンティティまたは文字列のリスト |
エンティティ | OCID |
ソース | ソースの説明 |
---|---|
要求 | リクエスト入力から取得されます。 |
導出済 | リクエストから取得されます |
格納済 | サービスから取得され、入力は保持されます。 |
計算済 | サービス・データから計算されます |
すべてのリクエストに対する変数
次の表に、リクエストごとにサービスによって提供される必須変数を示します。
変数 | 変数タイプ | 内容 |
---|---|---|
target.compartment.id |
ENTITY |
リクエストのプライマリ・リソースのOCID |
request.operation |
STRING |
リクエストの操作ID (たとえば、GetUser) |
target.resource.kind |
STRING |
リクエストのプライマリ・リソースのリソース種類名 |
次の表に、リクエストごとにSDKによって提供される自動変数を示します。
変数 | 変数タイプ | 摘要 |
---|---|---|
ユーザーが開始したリクエストの場合: request.user.id
|
ENTITY
|
コール・ユーザーのOCID
|
request.principal.group.tag.
|
STRING |
プリンシパルがメンバーであるグループの各タグの値 |
request.principal.compartment.tag.
|
STRING |
プリンシパルをメンバーとするコンパートメント内の各タグの値 |
次の表に、IAM AuthZによって暗黙的に計算される動的変数を示します。
変数 | 変数タイプ | 摘要 |
---|---|---|
request.principal.group.tag.<tagNS>.<tagKey>
|
STRING |
プリンシパルがメンバーであるグループの各タグの値。 |
request.principal.compartment.tag.<tagNS>.<tagKey |
STRING |
プリンシパルを含むコンパートメントの各タグの値。 |
target.resource.tag.<tagNS>.<tagKey> |
STRING |
ターゲット・リソースの各タグの値。(各リクエストでサービスによって提供される |
target.resource.compartment.tag.<tagNS>.<tagKey>
|
STRING |
ターゲット・リソースを含むコンパートメントの各タグの値。 |
動詞+リソース・タイプの組合せの詳細
次の表は、各動詞でカバーされる権限およびAPI操作を示しています。アクセス・レベルは、inspect
> read
> use
> manage
の順に累積します。表のセルのプラス記号(+)は、そのすぐ上のセルと比較して増分アクセスを示しますが、「追加なし」は増分アクセスを示しません。
権限の詳細は、「権限」を参照してください。
API操作ごとに必要な権限
ポリシー・コンパイラで使用可能にする操作固有の属性をリストします。特定のリソース・タイプの場合、すべてのタスク(取得、リスト、削除など)で同じ属性セットを持つ必要があります。1つの例外はCreate
タスクに関するものであり、そのオブジェクトのIDはまだないため、Create
のtarget.RESOURCE-KIND.id属性はありません。
権限の詳細は、権限を参照してください。
次の表は、リソース・スケジューラAPI操作を論理的な順序で、リソース・タイプ別にグループ化したものです。
API | 操作の使用に必要な権限 | 工程 |
---|---|---|
ListSchedules | RESOURCE_SCHEDULE_INSPECT |
リソース・スケジュールのリストを返します。 |
GetSchedule | RESOURCE_SCHEDULE_READ |
リソース・スケジュールを取得します。 |
CreateSchedule | RESOURCE_SCHEDULE_CREATE |
リソース・スケジュールを作成します。 |
UpdateSchedule | RESOURCE_SCHEDULE_UPDATE |
リソース・スケジュールを更新します。 |
DeleteSchedule | RESOURCE_SCHEDULE_DELETE |
リソース・スケジュールを削除します。 |
ChangeScheduleCompartment | RESOURCE_SCHEDULE_MOVE |
リソース・スケジュール・コンパートメントの変更 |
ListWorkRequests | RESOURCE_SCHEDULE_WORKREQUEST_INSPECT |
リソース・スケジュールに関連付けられた作業リクエストをリストします。 |
GetWorkRequest | RESOURCE_SCHEDULE_WORKREQUEST_READ |
作業リクエストを取得します。 |
メタバーマップ
リソース・タイプ | インスペクト | 読取り | 使用 | 管理 |
---|---|---|---|---|
RESOURCE-SCHEDULE |
RESOURCE_SCHEDULE_INSPECT |
RESOURCE_SCHEDULE_READ |
なし |
|
RESOURCE-SCHEDULE-WORKREQUEST |
RESOURCE_SCHEDULE_WORKREQUEST_INSPECT |
RESOURCE_SCHEDULE_WORKREQUEST_READ |
なし | なし |
サンプル・ポリシー
これらのサンプル・ポリシーをテンプレートとして使用して、独自のリソース・スケジューラ・ポリシーを作成および管理(作成、削除、アクティブ化など)できます。
リソース・スケジュールを使用するには、ユーザーにスケジュールを作成する権限を付与するポリシーを作成する必要があります。また、リソースを管理するスケジュール権限を付与するポリシーを作成する必要があります。
例1
このポリシーは、テナンシのリソース・スケジュールを管理する権限をユーザーに付与します。
この例では、名前付きユーザー・グループがテナンシ全体でリソース・スケジュールを管理できます:
Allow group <group_name> to manage resource-schedule-family in tenancy
たとえば:
Allow group YourResourceScheduleAdminGroup to manage resource-schedule-family in tenancy
例2
このポリシーは、特定のコンパートメントのリソース・スケジュールを管理する権限をユーザーに付与します。
次の例では、グループは名前付きコンパートメントのリソース・スケジュールを管理できます:
Allow group <group_name> to manage resource-schedule-family in compartment <compartment_name>
たとえば:
Allow group ResourceScheduleAdmins to manage resource-schedule-family in compartment ResourceScheduleCompartment
例3
このポリシーは、リソースに対してアクションを実行するリソース・スケジュール権限を付与します。
リソース・スケジュールが作成されると、デフォルトでは、ターゲット・リソースに対してアクションを実行する権限がありません。リソース・スケジュールに権限を付与する必要があります。
このポリシーは、コンパートメント内のインスタンスなどの事前定義済リソースを管理するためのスケジュール権限を付与します。
all{request.principal.type='resourceschedule',request.principal.id='<ocid_of_resourceschedule>
のコンパートメント内のリソース・タイプを管理できるようにします:Allow any-user to manage <resource_type> in compartment id <compartment_ocid> where all{request.principal.type='resourceschedule',request.principal.id='<ocid_of_resourceschedule>'}
たとえば:
Allow any-user to manage instance in compartment id ocid.compartment.oc1...q7fa where all{request.principal.type='resourceschedule',request.principal.id='ocid.resourceschedule.oc1.iad.axgr...dt8zb'}
例4
このポリシー例は、動的グループとしてアクションを実行するためのリソース・スケジュール権限を付与する方法を示しています。
最初に、アクセスを許可するリソースを識別する動的グループを作成します。次の例に示すように、動的グループには1つ以上の一致ルールが必要です。
次の例は、resource-scheduler-dynamic-group
という名前のリソース・スケジューラに対して動的グループを作成する方法を示しています。
ALL {resource.type='resourceschedule', resource.id='ocid.resourceschedule.oc1.iad.axgr...dt8zb'}
次に、適切なポリシーを設定します。
dynamic-group
resource-scheduler-dynamic-group
がテナンシでfunctions-family
を管理できるようにする方法を示しています:Allow dynamic-group resource-scheduler-dynamic-group to manage functions-family in tenancy