Stratégies IAM du planificateur de ressources

Découvrez comment utiliser des stratégies IAM pour garantir un accès sécurisé au planificateur de ressources afin de créer et de gérer des programmations de planificateur de ressources et d'autres fonctionnalités.

Authentification, autorisation et stratégies requises

Resource Scheduler utilise les stratégies IAM pour garantir un accès sécurisé à Resource Scheduler, pour créer des programmations et pour utiliser des programmations afin de gérer les ressources. Chaque service d'Oracle Cloud Infrastructure s'intègre à IAM pour l'authentification et l'autorisation, sur toutes les interfaces (consolekit 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 stratégies qui contrôlent le niveau et le type d'accès des utilisateurs aux services et aux ressources. Ces stratégies contrôlent qui peut créer les utilisateurs, créer et gérer le réseau cloud, créer les instances, créer les buckets, télécharger les objets, etc. Pour plus d'informations, reportez-vous à Gestion des domaines d'identité. Pour plus d'informations sur l'écriture de stratégies pour chacun des différents services, reportez-vous à Référence de stratégie.

Stratégies requises

Pour créer et gérer des plannings, vous devez créer une stratégie permettant aux utilisateurs de créer et de modifier des plannings. Vous devez également créer une stratégie pour autoriser les programmations à gérer les ressources.

Les exemples suivants montrent comment ces stratégies fonctionnent.

Exemple 1. Cette stratégie permet aux utilisateurs de créer et de modifier des programmations

Autorisez le groupe ResourceScheduleUsers à visualiser et à répertorier les programmations de ressource dans la location.

Allow ResourceScheduleUsers to inspect resource-schedule in tenancy

Exemple 2

Cette stratégie autorise la programmation de ressource à effectuer une action sur la ressource cible.

Lorsqu'une programmation de ressource est créée, par défaut, elle n'est pas autorisée à effectuer l'action sur les ressources cible. Vous devez donc lui accorder des droits d'accès.

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 qui ne sont pas administrateurs et qui doivent utiliser les ressources Oracle Cloud Infrastructure dont votre société est propriétaire doivent contacter leur administrateur pour configurer leurs ID utilisateur. L'administrateur peut confirmer les compartiments auxquels ces utilisateurs doivent avoir accès.

Pour utiliser l'une des opérations d'API du planificateur de ressources, vous devez être autorisé dans une stratégie IAM. Si vous n'êtes pas autorisé, contactez l'administrateur. Si vous êtes administrateur et que vous devez écrire des stratégies pour accorder l'accès aux utilisateurs, reportez-vous à Gestion des domaines d'identité.

Types de ressource

Le tableau suivant répertorie les types de ressource utilisés dans le planificateur de ressources et les droits d'accès requis pour les utiliser.

Types de ressource et droits d'accès
Type de ressource Droits d'accès
planning de la ressource
  • RESOURCE_SCHEDULE_INSPECT
  • RESOURCE_SCHEDULE_READ
  • RESOURCE_SCHEDULE_CREATE
  • RESOURCE_SCHEDULE_UPDATE
  • RESOURCE_SCHEDULE_MOVE
  • RESOURCE_SCHEDULE_DELETE
ressource-planification-demande de travail
  • RESOURCE_SCHEDULE_WORKREQUEST_INSPECT
  • RESOURCE_SCHEDULE_WORKREQUEST_READ

Variables prises en charge

Resource Scheduler prend en charge toutes les variables générales.

Pour plus d'informations, reportez-vous à Variables générales pour toutes les demandes et aux variables répertoriées dans le tableau suivant :

Conventions d'appellation

Les variables sont en minuscules et séparées par un trait d'union.

target.tag-namespace.name # "name"indicates a unique key
target.display-name # "display-name"indicates a non-unique description

Reportez-vous à Variables générales pour toutes les demandes, ainsi qu'aux variables répertoriées dans le tableau suivant :

Types et sources de variable

Types de variable
Type Description du type
Chaîne Texte libre
Liste(Type) Liste d'entités ou de chaînes
Entité OCID
Sources de variable
Source Description de la source
Demande provient de l'entrée de la demande.
Dérivé Elle provient de la demande.
Stocké provient du service, entrée conservée
Calculé Calculé à partir des données de service

Variables pour chaque demande

Le tableau suivant présente les variables obligatoires, qui sont fournies par les services pour chaque demande.

Variables requises du planificateur de ressources
Variable Type de variable Description
target.compartment.id ENTITY OCID de la ressource principale de la demande
request.operation STRING ID de l'opération (par exemple, GetUser) pour la demande
target.resource.kind STRING Nom de catégorie de la ressource principale de la demande

Le tableau suivant présente les variables automatiques, qui sont fournies par le kit SDK pour chaque demande.

Variables automatiques
Variable Type de variable Description

Pour les demandes lancées par l'utilisateur:

request.user.id

request.groups.id

ENTITY

LIST(ENTITY)

OCID de l'utilisateur appelant

OCID des groupes de request.user.id

request.principal.group.tag.

<tagNS>.<tagKey

STRING Valeur de chaque balise sur un groupe dont le principal est membre
request.principal.compartment.tag.

<tagNS>.<tagKey

STRING Valeur de chaque balise dans un compartiment dont le principal est membre

Le tableau suivant présente les variables dynamiques, qui sont calculées implicitement par IAM AuthZ.

Variables dynamique
Variable Type de variable Description
request.principal.group.tag.<tagNS>.<tagKey> STRING

Valeur de chaque balise sur un groupe dont le principal est membre.

request.principal.compartment.tag.<tagNS>.<tagKey STRING Valeur de chaque balise sur le compartiment qui contient le principal.
target.resource.tag.<tagNS>.<tagKey> STRING

Valeur de chaque balise sur la ressource cible. (Calculé en fonction de l'élément tagSlug fourni par le service à chaque demande.)

target.resource.compartment.tag.<tagNS>.<tagKey> STRING

Valeur de chaque balise sur le compartiment qui contient la ressource cible.

Détails des combinaisons de verbe et de type de ressource

Les tableaux suivants indiquent les droits d'accès et les opérations d'API que couvre chaque verbe. Le niveau d'accès est cumulatif à mesure que vous passez d'un verbe à l'autre, dans l'ordre suivant : inspect > read > use > manage. Le signe plus (+) dans une cellule du tableau indique un accès incrémentiel par rapport à la cellule directement au-dessus, alors que la mention "aucun élément supplémentaire" n'indique aucun accès incrémentiel.

Pour plus d'informations sur les autorisations, reportez-vous à Droits d'accès.

Droits d'accès requis pour chaque opération d'API

Répertoriez les attributs spécifiques à l'opération que vous mettez à la disposition du compilateur de stratégies. Pour un type de ressource spécifique, vous devez avoir le même ensemble d'attributs pour toutes les tâches (obtenir, répertorier, supprimer, etc.). La seule exception concerne la tâche Create. Comme vous n'avez pas encore l'ID de l'objet, vous n'aurez pas d'attribut target.RESOURCE-KIND.id pour Create.

Pour plus d'informations sur les droits d'accès, reportez-vous à Droits d'accès.

Le tableau suivant répertorie les opérations d'API du planificateur de ressources dans un ordre logique, regroupées par type de ressource.

Droits d'accès requis pour chaque opération d'API du planificateur de ressources
API Droits d'accès requis pour utiliser l'opération Opération
ListSchedules RESOURCE_SCHEDULE_INSPECT Renvoyer une liste des plannings de ressources.
GetSchedule RESOURCE_SCHEDULE_READ Obtenir une programmation de ressource.
CreateSchedule RESOURCE_SCHEDULE_CREATE Créez un planning de ressources.
UpdateSchedule RESOURCE_SCHEDULE_UPDATE Mettre à jour un planning de ressources.
DeleteSchedule RESOURCE_SCHEDULE_DELETE Supprimer un planning de ressources.
ChangeScheduleCompartment RESOURCE_SCHEDULE_MOVE Modifier le compartiment de programmation de ressource
ListWorkRequests RESOURCE_SCHEDULE_WORKREQUEST_INSPECT Répertorier les demandes de travail associées à un planning de ressources.
GetWorkRequest RESOURCE_SCHEDULE_WORKREQUEST_READ Obtenez une demande d'élément de travail.

Carte de Metaverb

Carte de Metaverb
Type de ressource Contrôler Lire Utiliser Gérer
RESOURCE-SCHEDULE RESOURCE_SCHEDULE_INSPECT RESOURCE_SCHEDULE_READ aucun
  • RESOURCE_SCHEDULE_CREATE
  • RESOURCE_SCHEDULE_UPDATE
  • RESOURCE_SCHEDULE_UPDATE
  • RESOURCE_SCHEDULE_MOVE
  • RESOURCE_SCHEDULE_DELETE
RESOURCE-SCHEDULE-WORKREQUEST RESOURCE_SCHEDULE_WORKREQUEST_INSPECT RESOURCE_SCHEDULE_WORKREQUEST_READ aucun aucun

Exemples de stratégies

Vous pouvez utiliser ces exemples de stratégie en tant que modèles pour créer et gérer (créer, supprimer, activer, etc.) vos propres stratégies Resource Scheduler.

Remarque

Pour utiliser des programmations de ressource, vous devez créer une stratégie afin d'autoriser les utilisateurs à créer une programmation et vous devez créer une stratégie afin d'autoriser une programmation à gérer les ressources.

Exemple 1

Cette stratégie autorise les utilisateurs à gérer les programmations de ressource dans leur location.

Cet exemple permet à un groupe d'utilisateurs nommés de gérer les programmations de ressource dans l'ensemble de la location :

Allow group <group_name> to manage resource-schedule-family in tenancy

Par exemple :

Allow group YourResourceScheduleAdminGroup to manage resource-schedule-family in tenancy

Exemple 2

Cette stratégie autorise les utilisateurs à gérer les programmations de ressource dans un compartiment spécifique.

L'exemple suivant permet à un groupe de gérer les programmations de ressource dans un compartiment nommé :

Allow group <group_name> to manage resource-schedule-family in compartment <compartment_name>

Par exemple :

Allow group ResourceScheduleAdmins to manage resource-schedule-family in compartment ResourceScheduleCompartment

Exemple 3

Cette stratégie autorise une programmation de ressource à effectuer une action sur une ressource.

Lorsqu'un planning de ressources est créé, par défaut, il ne dispose pas des droits d'accès permettant d'effectuer l'action sur les ressources cible, vous devez lui accorder des droits d'accès.

Cette stratégie octroie un droit d'accès de programmation permettant de gérer des ressources prédéfinies telles que des instances dans un compartiment.

L'exemple suivant permet à un utilisateur de gérer un type de ressource dans un compartiment où 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>'}

Par 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 stratégie montre comment accorder une autorisation de planification de ressource pour effectuer une action en tant que groupe dynamique.

Commencez par créer un groupe dynamique pour identifier les ressources pour lesquelles vous souhaitez autoriser l'accès. Le groupe dynamique requiert une ou plusieurs règles de correspondance, comme indiqué dans l'exemple suivant.

L'exemple suivant montre comment créer un groupe dynamique pour le planificateur de ressources nommé resource-scheduler-dynamic-group :

ALL {resource.type='resourceschedule', resource.id='ocid.resourceschedule.oc1.iad.axgr...dt8zb'}

Ensuite, configurez les stratégies appropriées.

L'exemple suivant montre comment autoriser 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