Politiques IAM du programmateur de ressources
Découvrez comment utiliser les politiques IAM pour garantir un accès sécurisé au programmateur de ressources afin de créer et de gérer des programmations du programmateur de ressources et d'autres fonctionnalités.
Authentification, autorisation et politiques requises
Le programmateur de ressources utilise les politiques IAM pour garantir un accès sécurisé au programmateur de ressources, pour créer des programmations et pour utiliser des programmations pour gérer les ressources. Chaque service d'Oracle Cloud Infrastructure est intégré avec le service GIA aux fins d'authentification et d'autorisation, pour toutes les interfaces (console, trousse SDK ou interface de ligne de commande et API REST).
Vous ou un autre administrateur de votre organisation devez configurer des groupes, des compartiments et des politiques qui contrôlent l'utilisateur le niveau et le type d'accès aux services et aux ressources. Ces politiques contrôlent qui peut créer des utilisateurs, créer et gérer le réseau en nuage, créer des instances, créer des seaux, télécharger des objets, etc. Pour plus d'informations, voir Gestion des domaines d'identité. Pour des détails précis sur l'écriture de politiques pour les différents services, voir Informations de référence sur les politiques.
Politiques requises
Pour créer et gérer des programmes, vous devez créer une politique permettant aux utilisateurs de créer et de modifier des programmes. Vous devez également créer une politique pour accorder aux programmations l'autorisation de gérer les ressources.
Les exemples suivants montrent comment ces politiques fonctionnent.
exemple 1. Cette politique permet aux utilisateurs de créer et de modifier des programmes
Autorisez le groupe ResourceScheduleUsers à voir et à lister les programmes de ressources dans la location.
Allow ResourceScheduleUsers to inspect resource-schedule in tenancy
Exemple 2
Cette politique donne l'autorisation de programmer une ressource pour effectuer une action sur la ressource cible.
Lorsqu'un programme de ressources est créé, par défaut, il n'est pas autorisé à effectuer l'action sur les ressources cibles. Vous devez donc lui accorder l'autorisation nécessaire.
L'exemple suivant permet à tout utilisateur d'effectuer une action sur une ressource cible.
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'}
Les utilisateurs non administrateurs qui doivent utiliser les ressources Oracle Cloud Infrastructure dont votre société est responsable doivent communiquer avec leur administrateur pour configurer leurs ID utilisateur. L'administrateur peut confirmer le ou les compartiments auxquels ces utilisateurs doivent avoir accès.
Pour utiliser l'une des opérations d'API du programmateur de ressources, vous devez être autorisé dans une politique IAM. Si vous n'êtes pas autorisé, communiquez avec l'administrateur. Si vous êtes un administrateur qui doit écrire des politiques pour accorder l'accès aux utilisateurs, voir Gestion des domaines d'identité
Types de ressource
Le tableau suivant répertorie les types de ressource utilisés dans Resource Scheduler et les autorisations REQUIRED pour les utiliser.
| Type de ressource | Permissions |
|---|---|
| calendrier des ressources |
|
| ressource-calendrier-demande de travail |
|
Variables prises en charge
Le planificateur de ressources prend en charge toutes les variables générales.
Pour plus d'informations, voir Variables générales pour toutes les demandes et les variables répertoriées dans le tableau suivant :
Conventions d'attribution de nom
Les variables sont en minuscules et séparées par des tirets.
target.tag-namespace.name # "name"indicates a unique key
target.display-name # "display-name"indicates a non-unique description
Voir Variables générales pour toutes les demandes, plus les variables répertoriées dans le tableau suivant :
Types et sources de variables
| Type | Description du type |
|---|---|
| Chaîne | Texte de forme libre |
| Liste(Type) | Liste d'entités ou de chaînes |
| Entité | OCID |
| Source | Description source |
|---|---|
| Demande | Provient de l'entrée de la demande |
| Calculé | Provient de la demande |
| Stockée | Provient du service, entrée conservée |
| Calculé | Calculé à partir des données du service |
Variables pour chaque demande
Le tableau suivant présente les variables obligatoires, qui sont fournies par les services pour chaque demande.
| Variable | Type de variable | Description |
|---|---|---|
target.compartment.id |
ENTITY |
OCID de la ressource principale de la demande |
request.operation |
STRING |
ID opération, par exemple GetUser pour la demande |
target.resource.kind |
STRING |
Nom du type de ressource de la ressource principale de la demande |
Le tableau suivant présente les variables automatiques, fournies par la trousse SDK pour chaque demande.
| Variable | Type de variable | Description |
|---|---|---|
Pour les demandes lancées par l'utilisateur : request.user.id
|
ENTITY
|
OCID de l'utilisateur appelant OCID des groupes de |
request.principal.group.tag.
|
STRING |
Valeur de chaque marqueur d'un groupe dont le principal est un membre |
request.principal.compartment.tag.
|
STRING |
Valeur de chaque marqueur d'un compartiment dont le principal est un membre |
Le tableau suivant présente les variables dynamiques, qui sont calculées implicitement par le service IAM AuthZ.
| Variable | Type de variable | Description |
|---|---|---|
request.principal.group.tag.<tagNS>.<tagKey>
|
STRING |
Valeur de chaque marqueur d'un groupe dont le principal est un membre. |
request.principal.compartment.tag.<tagNS>.<tagKey |
STRING |
Valeur de chaque marqueur du compartiment qui contient le principal. |
target.resource.tag.<tagNS>.<tagKey> |
STRING |
Valeur de chaque marqueur sur la ressource cible. (Calculé sur la base de |
target.resource.compartment.tag.<tagNS>.<tagKey>
|
STRING |
Valeur de chaque marqueur du compartiment contenant la ressource cible. |
Informations détaillées sur les combinaisons Verbe + Type de ressource
Les tableaux suivants présentent les autorisations et les opérations d'API couvertes par chaque verbe. Le niveau d'accès est cumulatif depuis inspect > read > use > manage. Un signe plus (+) dans une cellule de tableau indique un accès incrémentiel par rapport à la cellule directement au-dessus, alors que la mention "aucun accès supplémentaire" indique qu'il n'y a aucun accès incrémentiel.
Pour plus de détails sur les autorisations, voir Autorisations.
Autorisations requises pour chaque opération d'API
Listez les attributs propres à l'opération que vous mettez à la disposition du compilateur de politiques. Pour un type de ressource spécifique, vous devez avoir le même jeu d'attributs pour toutes les tâches (get, list, delete, etc.). À l'exception de la tâche Create, pour laquelle vous ne disposez pas encore de l'ID de l'objet, vous ne pouvez pas avoir d'attribut target.RESOURCE-KIND.id pour Create.
Pour plus d'informations sur les autorisations, voir Autorisations.
Le tableau suivant liste les opérations d'API du programmateur de ressources dans un ordre logique, regroupées par type de ressource.
| API | Autorisations requises pour utiliser l'opération | Opération |
|---|---|---|
| ListSchedules | RESOURCE_SCHEDULE_INSPECT |
Sert à retourner une liste d'horaires de ressources. |
| GetSchedule | RESOURCE_SCHEDULE_READ |
Obtenir un programme de ressources. |
| CreateSchedule | RESOURCE_SCHEDULE_CREATE |
Créer un programme de ressources. |
| UpdateSchedule | RESOURCE_SCHEDULE_UPDATE |
Mettre à jour un programme de ressources. |
| DeleteSchedule | RESOURCE_SCHEDULE_DELETE |
Supprimer un programme de ressources. |
| ChangeScheduleCompartment | RESOURCE_SCHEDULE_MOVE |
Modifier le compartiment du programme de ressources |
| ListWorkRequests | RESOURCE_SCHEDULE_WORKREQUEST_INSPECT |
Liste des demandes de travail associées à un horaire de ressource. |
| GetWorkRequest | RESOURCE_SCHEDULE_WORKREQUEST_READ |
Obtenir une demande de travail. |
Mappage Metaverb
| Type de ressource | Inspecter | Lecture | Utiliser | Gérer |
|---|---|---|---|---|
RESOURCE-SCHEDULE |
RESOURCE_SCHEDULE_INSPECT |
RESOURCE_SCHEDULE_READ |
aucune |
|
RESOURCE-SCHEDULE-WORKREQUEST |
RESOURCE_SCHEDULE_WORKREQUEST_INSPECT |
RESOURCE_SCHEDULE_WORKREQUEST_READ |
aucune | aucune |
Exemple de politiques
Vous pouvez utiliser ces exemples de politiques en tant que modèles pour créer et gérer (créer, supprimer, activer et autres) vos propres politiques de planificateur de ressources.
Pour utiliser des programmes de ressources, vous devez créer une politique pour accorder aux utilisateurs l'autorisation de créer un programme et vous devez créer une politique pour accorder à un programme l'autorisation de gérer des ressources.
Exemple 1
Cette politique permet aux utilisateurs de gérer les programmes de ressources dans leur location.
Cet exemple permet à un groupe d'utilisateurs nommé de gérer les programmes de ressources dans l'ensemble de la location :
Allow group <group_name> to manage resource-schedule-family in tenancy
Exemple :
Allow group YourResourceScheduleAdminGroup to manage resource-schedule-family in tenancy
Exemple 2
Cette politique permet aux utilisateurs de gérer les programmes de ressources dans un compartiment spécifique.
L'exemple suivant permet à un groupe de gérer les programmes de ressources dans un compartiment nommé :
Allow group <group_name> to manage resource-schedule-family in compartment <compartment_name>
Exemple :
Allow group ResourceScheduleAdmins to manage resource-schedule-family in compartment ResourceScheduleCompartment
Exemple 3
Cette politique donne une autorisation de programmation de ressource pour effectuer une action sur une ressource.
Lorsqu'un programme de ressources est créé, par défaut, il n'est pas autorisé à effectuer l'action sur les ressources cibles. Vous devez lui accorder l'autorisation.
Cette politique permet de programmer la gestion de ressources prédéfinies telles que les instances d'un compartiment.
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>'}Exemple :
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'}
Exemple 4
Cet exemple de politique montre comment accorder une autorisation de programmation de ressource pour effectuer une action en tant que groupe dynamique.
Tout d'abord, créez un groupe dynamique pour identifier les ressources pour lesquelles vous souhaitez autoriser l'accès. Le groupe dynamique nécessite une ou plusieurs règles de correspondance, comme illustré dans l'exemple suivant.
L'exemple suivant montre comment créer un groupe dynamique pour le programmateur de ressources nommé resource-scheduler-dynamic-group :
ALL {resource.type='resourceschedule', resource.id='ocid.resourceschedule.oc1.iad.axgr...dt8zb'}
Ensuite, configurez les politiques appropriées.
dynamic-group resource-scheduler-dynamic-group à gérer functions-family dans la location :Allow dynamic-group resource-scheduler-dynamic-group to manage functions-family in tenancy