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.
Type de ressource | Droits d'accès |
---|---|
planning de la ressource |
|
ressource-planification-demande de travail |
|
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
Type | Description du type |
---|---|
Chaîne | Texte libre |
Liste(Type) | Liste d'entités ou de chaînes |
Entité | OCID |
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.
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.
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 balise sur un groupe dont le principal est membre |
request.principal.compartment.tag.
|
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.
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 |
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.
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
Type de ressource | Contrôler | Lire | Utiliser | Gérer |
---|---|---|---|---|
RESOURCE-SCHEDULE |
RESOURCE_SCHEDULE_INSPECT |
RESOURCE_SCHEDULE_READ |
aucun |
|
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.
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.
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.
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