Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction à Oracle Cloud Infrastructure Free Tier.
- Il utilise des exemples de valeurs pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Approfondissement des stratégies Oracle Cloud Infrastructure Identity and Access Management basées sur des balises
Introduction
Les stratégies Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) sont la pierre angulaire d'un environnement cloud fiable et sécurisé. Ils fournissent un mécanisme puissant et flexible pour contrôler l'accès aux ressources OCI, garantissant que seuls les utilisateurs et services autorisés peuvent effectuer des actions spécifiques sur les ressources désignées.
De base, une stratégie OCI IAM est un ensemble d'instructions déclaratives écrites dans une syntaxe lisible par l'utilisateur qui indique qui peut accéder à quoi et sous quelles conditions. Ces stratégies permettent aux organisations d'appliquer le principe du moindre privilège, en accordant aux utilisateurs et aux services uniquement les autorisations dont ils ont besoin pour effectuer leurs tâches et rien de plus. Cela minimise les risques de sécurité tout en maintenant l'efficacité opérationnelle.
Les stratégies OCI IAM sont appliquées à différents niveaux de la hiérarchie OCI, notamment les compartiments, la location et les ressources spécifiques, ce qui les rend hautement adaptables aux structures organisationnelles complexes. Grâce à l'héritage de stratégies et à la compartimentation d'OCI, les administrateurs peuvent établir des contrôles affinés adaptés à leurs exigences opérationnelles et de sécurité spécifiques. Pour plus d'informations sur les stratégies OCI, reportez-vous à Initiation aux stratégies.
Dans ce tutoriel, nous allons nous pencher sur l'importance de l'optimisation des stratégies, explorer les meilleures pratiques pour affiner les stratégies afin d'obtenir des résultats optimaux et mettre en évidence les scénarios dans lesquels l'optimisation des stratégies peut être exploitée au maximum de son potentiel.
Objectifs
-
Démystifier les composants de stratégie et la syntaxe.
-
Découvrez pourquoi le réglage des stratégies OCI IAM est crucial pour l'évolutivité et les limites de stratégie.
-
Fournir des bonnes pratiques exploitables.
-
Souligner le rôle du balisage dans la gestion des politiques.
-
Mettez en évidence les défis et les solutions communs en présentant des cas d'utilisation concrets.
Prérequis
-
Accès à une location OCI.
-
Compréhension de base des concepts OCI.
-
Connaissance d'OCI IAM.
-
Bonne connaissance de la syntaxe des stratégies.
-
Compréhension des bases de la compartimentation et du balisage.
-
Conscience du principe du moindre privilège.
-
La stratégie OCI limite les connaissances.
-
Expérience de la gouvernance et des normes de conformité.
Démystifier les composants de stratégie et la syntaxe
Pour optimiser efficacement les stratégies OCI IAM, il est essentiel de comprendre leur structure et leurs composants clés. Les stratégies dans OCI définissent les droits d'accès en indiquant qui (principal), quoi (action) sur quoi (ressource) et où (portée). Décomposons cette opération :
Composants clés d'une stratégie OCI IAM
-
Principal (Objet) : entité demandant l'accès, qui peut être l'une des suivantes :
-
Utilisateur : compte individuel dans OCI, représentant généralement une personne. Pour plus d'informations, reportez-vous à Gestion des utilisateurs.
-
Groupe : ensemble d'utilisateurs ayant des besoins d'accès partagé. Pour plus d'informations, reportez-vous à Utilisation des groupes.
-
Groupe dynamique : ensemble de ressources OCI (par exemple, instances de calcul, fonctions) identifiées par des règles spécifiques. Les ressources d'un groupe dynamique sont automatiquement regroupées en fonction de critères tels que des balises ou des métadonnées. Pour plus d'informations, reportez-vous à Gestion des groupes dynamiques.
-
Principal de ressource : service (comme OCI Functions ou Oracle Autonomous Database) agissant pour son propre compte. Les principaux de ressource permettent aux services de s'authentifier en toute sécurité avec OCI et d'autres ressources sans avoir besoin d'informations d'identification explicites. Pour plus d'informations, reportez-vous à Authentification du principal de ressource.
-
Principal d'instance : type de principal de ressource propre aux instances de calcul. Elle permet aux instances d'interagir directement avec les services OCI (par exemple, OCI Object Storage ou Identity) à l'aide de stratégies OCI IAM, sans intégrer d'informations d'identification dans l'application exécutée sur l'instance. Pour plus d'informations, reportez-vous à Principaux d'instance.
-
-
Action (verbe) : indique les opérations que le principal peut effectuer :
inspect
: affichez les métadonnées relatives à la ressource.read
: affichez les métadonnées et les données de la ressource.use
: effectuez des actions de lecture et des opérations de gestion limitées.manage
: effectuez toutes les actions, y compris la création et la suppression de ressources.
Pour plus d'informations, reportez-vous à Opérations.
-
Ressource (type de ressource) : définit le type de ressource OCI auquel l'action s'applique, par exemple :
- Instances de calcul, buckets de stockage, réseaux cloud virtuels, bases de données, etc.
- Les ressources peuvent être organisées hiérarchiquement à l'aide de compartiments pour une meilleure gestion.
Pour plus d'informations, reportez-vous à Ressources.
-
Portée (emplacement) : indique l'emplacement auquel la stratégie s'applique :
- Compartiment : conteneur logique pour les ressources, permettant une organisation hiérarchique.
- Location : l'ensemble du compte OCI, généralement utilisé pour les droits d'accès globaux.
Pour plus d'informations, reportez-vous à Lieu.
-
Règle de mise en correspondance (conditions) : indiquez des conditions. Utilisez any ou all avec les conditions multiples pour un opérateur logique OR ou AND, respectivement.
- Syntaxe pour une condition unique :
variable =|!= value
. - Syntaxe pour des conditions multiples :
any|all {<condition>,<condition>,...}
.
Pour plus d'informations, reportez-vous à Conditions.
- Syntaxe pour une condition unique :
Conseil supplémentaire : Présentation du concept Sets-Intersect dans la stratégie OCI IAM
L'intersection d'ensembles dans les stratégies OCI IAM est utilisée pour accorder l'accès uniquement en cas de chevauchement entre deux ensembles de valeurs. Cela garantit que les droits d'accès sont accordés de manière dynamique en fonction de l'appartenance au groupe, des balises de ressource ou d'autres attributs, plutôt que de coder en dur des utilisateurs ou des groupes spécifiques dans les stratégies.
-
Exemple d'intersection d'ensembles dans la stratégie OCI IAM
Allow any-user to manage database-family-resources in tenancy where sets-intersect(request.groups.name, target.resource.compartment.tag.database.admins)
Briser l'énoncé de politique :
-
Autoriser tout utilisateur : cette stratégie s'applique à tout utilisateur authentifié dans OCI (quel que soit l'appartenance à un groupe spécifique).
-
pour gérer les ressources database-family-resources : accorde un contrôle administratif complet sur toutes les ressources liées à la base de données (bases de données autonomes, systèmes de base de données, sauvegardes, etc.).
-
dans la location : la stratégie s'applique à l'ensemble de la location (tous les compartiments).
-
où sets-intersect(
request.groups.name
,target.resource.compartment.tag.database.admins
)request.groups.name
: représente les groupes auxquels l'utilisateur appartient.target.resource.compartment.tag.database.admins
: balise du compartiment contenant la liste des groupes autorisés pouvant gérer les ressources de base de données dans ce compartiment.- sets-intersect(...) : garantit que l'accès est accordé uniquement si l'utilisateur appartient à au moins un groupe répertorié dans la balise.
-
Modèle de stratégie OCI IAM à grande échelle
Les stratégies OCI IAM sont l'un des éléments fondamentaux de la sécurisation des workloads sur OCI. Il est crucial de pouvoir faire évoluer et prendre en charge une charge de travail importante pour nos clients. C'est pourquoi nous avons créé un modèle de politique qui nécessite un petit nombre de stratégies, dans les limites de stratégie d'OCI, qui fonctionnent pour n'importe quelle taille de charge globale. Voici quelques-unes des raisons d'adopter le modèle de politique évolutif. Pour plus d'informations, reportez-vous à Limites d'IAM avec domaines d'identité.
Le réglage des stratégies OCI IAM est une tâche essentielle pour maintenir un environnement cloud sécurisé, évolutif et efficace tout en respectant les limites de stratégie d'OCI. Voici pourquoi ce processus est essentiel :
-
Limites et contraintes de stratégie : OCI applique des limites spécifiques sur le nombre de stratégies pouvant être créées dans une location et des compartiments. Ces limites peuvent être rapidement épuisées dans les environnements à grande échelle ou complexes si les stratégies ne sont pas optimisées.
-
Les principales raisons sont les suivantes :
- Éviter la redondance : la définition répétée de stratégies similaires pour différents compartiments ou ressources peut entraîner une surcharge de stratégies, ce qui rend la gestion plus difficile.
- Rester dans les limites de stratégie OCI : OCI dispose d'un nombre maximal d'instructions de stratégie par stratégie et par location. Le réglage garantit que vous n'atteignez pas ces limites prématurément.
-
-
Amélioration de la facilité de gestion : à mesure que les entreprises se développent, la gestion de centaines de stratégies dans plusieurs compartiments peut devenir encombrante sans réglage. Stratégies optimisées :
- Simplifiez la gestion en réduisant le nombre total de stratégies.
- Améliorez la clarté et évitez les chevauchements ou les conflits de règles, ce qui facilite le débogage et l'audit.
-
Evolutivité dans des environnements complexes : les stratégies réglées permettent une évolutivité transparente en :
- Utilisez des caractères génériques et des droits d'accès au niveau de la ressource si nécessaire pour réduire le besoin de règles propres à un compartiment ou à une ressource. Pour plus d'informations, reportez-vous à Conditions.
- Exploiter l'héritage des stratégies pour que les stratégies de niveau supérieur s'appliquent aux compartiments enfant sans avoir besoin d'instructions en double. Pour plus d'informations, reportez-vous à Héritage de stratégie.
- Regrouper les utilisateurs et les ressources de manière logique pour appliquer des autorisations plus larges mais toujours sécurisées.
-
Optimisation des performances : OCI évalue les stratégies lors de chaque demande d'accès. Un grand nombre de stratégies redondantes ou trop spécifiques peut augmenter le temps d'évaluation, ce qui peut ralentir les décisions de contrôle d'accès. Les stratégies optimisées réduisent les frais généraux, garantissant des opérations plus rapides et plus efficaces.
-
Adhésion au principe du moindre privilège : lors du réglage pour l'évolutivité, il est essentiel de maintenir le principe du moindre privilège. Des stratégies larges et non contrôlées peuvent compromettre la sécurité. Il est donc essentiel de trouver un équilibre entre un accès minimal et l'évolutivité.
Le rôle du balisage dans la gestion des politiques
Le balisage est une fonctionnalité puissante d'OCI qui améliore considérablement la gestion des stratégies en permettant un contrôle affiné des ressources. Les balises sont des libellés de métadonnées, représentés par des paires clé-valeur, qui peuvent être attachés à des ressources. Ils aident à organiser, à gérer et à appliquer le contrôle d'accès à grande échelle, en particulier dans les environnements cloud complexes comportant plusieurs équipes et projets. Pour plus d'informations, reportez-vous à Présentation de Tagging.
Comment le balisage améliore la gestion des stratégies
-
Simplifie l'identification des ressources : les balises fournissent un moyen unifié de classer les ressources en fonction d'attributs tels que les projets, les environnements, les propriétaires ou les services. Cela simplifie le processus d'application des stratégies à des sous-ensembles spécifiques de ressources.
Exemple : le balisage des ressources avec
Project: ProjectX
active les stratégies d'accès ciblé.Allow group Developers to manage instances in tenancy where tag.Project = 'ProjectX'
-
Activation de l'application dynamique des stratégies : les stratégies basées sur des balises s'adaptent à la modification des attributs de ressource. Par exemple, si une nouvelle instance est balisée avec
Environment: Production
, elle hérite automatiquement des stratégies définies pour les environnements de production.Exemple de stratégie :
Allow group QA to inspect instances in tenancy where tag.Environment = 'Test'
-
Rationalise la gouvernance multi-projets et multi-équipes : les balises permettent d'isoler l'accès en associant des ressources à des équipes ou des projets spécifiques. Cela réduit la complexité de la gestion des autorisations entre plusieurs groupes.
-
Facilite l'automatisation : les balises peuvent générer des workflows automatisés pour la création de ressources, la surveillance et la gestion du cycle de vie. Par exemple, les scripts de suivi des coûts peuvent extraire toutes les ressources balisées avec CostCenter : Marketing pour générer des notes de frais détaillées.
-
Améliore la gestion des coûts et le reporting : les balises permettent une attribution granulaire des coûts à des projets, des services ou des environnements spécifiques. Cela aide les entreprises à suivre leurs dépenses et à optimiser leurs budgets plus efficacement.
Gouvernance des balises : contrôle de la gestion des balises
Pour maintenir la cohérence, la fiabilité et la sécurité dans la gestion des stratégies, la création et la modification de balises doivent être étroitement contrôlées. La gouvernance garantit que les balises sont appliquées correctement et s'alignent sur les normes organisationnelles. La restriction de la gestion des balises à un ensemble spécifique de personnes ou de groupes est un élément clé du maintien du contrôle, de la cohérence et de la sécurité au sein de l'environnement cloud d'une organisation.
-
Pourquoi limiter la gestion des balises ?
Le balisage est un outil puissant permettant d'organiser et de contrôler les ressources, mais s'il est mal géré, il peut entraîner des problèmes de contrôle d'accès, de suivi des coûts et de gouvernance, incohérents ou non autorisés. En implémentant des stratégies strictes permettant de gérer les balises, les entreprises peuvent s'assurer que seul le personnel autorisé peut créer, modifier ou supprimer des balises critiques, en préservant l'intégrité de l'environnement.
-
Empêcher les modifications non autorisées : les balises sont souvent liées à des processus métier importants, tels que l'allocation des coûts, la catégorisation des ressources et le contrôle d'accès. Autoriser l'accès illimité à la modification des balises peut entraîner des modifications non autorisées ou accidentelles, ce qui peut interrompre les opérations ou entraîner une affectation incorrecte des ressources.
-
Assurer la cohérence des normes de balisage : les entreprises bénéficient de schémas de balisage standardisés qui permettent d'organiser les ressources et de faciliter le suivi. En limitant la gestion des balises à un groupe défini d'administrateurs, les entreprises peuvent garantir le respect de ces normes, empêchant ainsi la fragmentation et l'incohérence des pratiques de balisage.
-
Gérer la sécurité et la conformité : les balises peuvent être utilisées pour appliquer les stratégies de sécurité et les exigences de conformité. Par exemple, les balises peuvent définir des environnements (par exemple, Production, Développement) ou des classifications de données sensibles. En autorisant uniquement les utilisateurs autorisés à modifier ces balises, vous garantissez que les environnements sensibles sont protégés et que les contrôles d'accès sont appliqués correctement.
-
Réduire le risque d'erreur de configuration de stratégie : les stratégies basées sur des balises dans OCI (comme le contrôle d'accès aux ressources) dépendent d'une utilisation cohérente et précise des balises. Si le mauvais groupe ou la mauvaise personne peut modifier ou supprimer des balises, cela peut entraîner par inadvertance des stratégies d'accès trop larges ou restrictives.
-
-
Limitation de la gestion des balises dans OCI
Dans OCI, la gestion des balises peut être contrôlée en créant et en appliquant des stratégies OCI IAM qui définissent qui peut effectuer des opérations de balise, telles que la création, la mise à jour ou la suppression de balises. Ces stratégies peuvent être adaptées pour accorder l'accès à des utilisateurs, des groupes ou des compartiments spécifiques, afin de garantir que seules les personnes autorisées ont le pouvoir de modifier les balises critiques.
Voici quelques façons de limiter la gestion des balises à des individus ou à des groupes spécifiques :
-
Utiliser le contrôle d'accès basé sur un groupe : la première étape du contrôle de la gestion des balises consiste à s'assurer que seuls des groupes spécifiques disposent des droits d'accès nécessaires pour gérer les balises. Par exemple, un groupe désigné tel que
TagAdmins
peut recevoir des droits d'accès exclusifs pour gérer la création et les mises à jour de balise.Exemple de stratégie OCI IAM :
Allow group TagAdmins to manage tag-namespaces in tenancy
Cette stratégie garantit que seul le groupe
TagAdmins
peut créer, modifier ou supprimer des balises et des espaces de noms de balise dans l'ensemble de la location. Pour permettre à certains groupes, tels que les ingénieurs devops ou les groupes Terraform Runner, d'utiliser ces balises créées via la console pour les scripts, vous pouvez définir la stratégie suivante.Allow group devopsTeam to use tag-namespaces in tenancy Allow group terraformRunner to use tag-namespaces in tenancy Allow dynamic-group terraformRunner to use tag-namespaces in tenancy
-
Utilisation de stratégies au niveau du compartiment pour le contrôle affiné : les stratégies de gestion des balises peuvent être appliquées au niveau du compartiment, de sorte que seuls certains compartiments disposent d'un accès à la gestion des balises. Par exemple, si vous voulez limiter la gestion des balises à un projet ou une unité opérationnelle spécifique, vous pouvez appliquer des stratégies qui limitent l'accès aux balises dans le compartiment approprié.
Exemple de stratégie pour la gestion des balises propres à un compartiment :
Allow group TagAdmins to manage tag-namespaces in compartment ProjectA
Cela garantit que seuls les utilisateurs du groupe
TagAdmins
peuvent gérer les balises dans le compartimentProjectA
, ce qui limite leur accès aux autres compartiments. De plus, vous pouvez créer des groupes pour autoriser uniquement les utilisateurs à utiliser les balises créées, mais pas à les modifier au niveau du compartiment.Allow group TagUser to use tag-namespaces in compartment ProjectA
-
Contrôle de balisage avec espaces de noms de balise : OCI prend en charge
tag namespaces
, qui regroupe les balises associées. Vous pouvez déterminer qui peut gérer les balises dans un espace de noms spécifique, ce qui permet un contrôle plus précis sur les personnes ayant accès à des types de balise spécifiques.Exemple de stratégie pour la gestion des balises propres à un espace de noms :
Allow group TagAdmins to manage tag-namespaces in tenancy where tag.namespace = 'Billing'
Ainsi, seuls les utilisateurs disposant des droits d'accès
TagAdmins
peuvent gérer les balises dans l'espace de noms de facturation, ce qui permet une gouvernance plus stricte autour des balises de suivi des coûts. -
Auditer et surveiller les modifications de balise : pour garantir la sécurité de la gestion des balises, les entreprises doivent implémenter des stratégies d'audit et de surveillance afin de suivre les modifications apportées aux balises. Les journaux d'audit d'OCI fournissent une visibilité sur les actions liées à la création, la suppression et la modification de balises. La surveillance de ces journaux permet d'identifier toute tentative non autorisée de modification de balises ou de modèles suggérant une mauvaise gestion.
-
Stratégies OCI IAM basées sur des balises pour des cas d'utilisation concrets
Maintenant, avec tout ce que vous avez appris ci-dessus, travaillons sur le réglage des stratégies OCI IAM pour les principes des utilisateurs et des instances dans des cas d'utilisation réels. Mais avant cela, il existe des politiques communes dont chaque client aura besoin, quel que soit son cas d'utilisation.
-
Stratégies OCI IAM courantes :
-
Stratégies OCI IAM pour la gestion des utilisateurs : le groupe
IAMAdmin
est responsable de la gestion des configurations OCI IAM, telles que les domaines, les utilisateurs et les groupes OCI IAM.Allow group IAMAdmin to manage domains in tenancy Allow group IAMAdmin to manage users in tenancy Allow group IAMAdmin to manage groups in tenancy
-
Stratégies OCI IAM pour la gestion des balises : le groupe
InfoSec
est responsable de la gestion des configurations liées à la sécurité, telles que les stratégies OCI IAM, les utilisateurs et les espaces de noms de balise.Allow group InfoSec to manage tag-namespaces in tenancy Allow group InfoSec to manage policies in tenancy Allow group InfoSec to use users in tenancy Allow group InfoSec to manage groups in tenancy where all {target.group.name != ‘Administrators’, target.group.name != ‘InfoSec’}
-
Stratégies OCI IAM pour (exécutant Terraform) : le groupe
terraform-runner
est dédié à l'exécution des scripts d'automatisation Terraform pour le provisionnement de l'infrastructure.Allow group terraform-runner to use tag-namespaces in tenancy Allow group terraform-runner to manage instance-family in compartment Tenants Allow group terraform-runner to manage virtual-network-family in compartment Tenants Allow group terraform-runner to manage volume-family in compartment Tenants Allow group terraform-runner to manage object-family in compartment Storage Allow group terraform-runner to manage secret-family in compartment Tenants Allow group terraform-runner to manage key-family in compartment Tenants
-
Redimensionnement des stratégies OCI IAM pour les ID utilisateur
Modèle de stratégie OCI IAM : dans ce modèle de politique, l'objectif est d'écrire un petit nombre de stratégies plus gérables reposant sur des données (balises dans notre cas), également appelées contrôle d'accès basé sur des attributs. Nous nous référerons aux balises affectées à la ressource cible ou au compartiment de ressource cible pour le contrôle d'accès en tant que balises de droit d'accès.
Balises d'autorisation : définissez une balise de droit d'accès pour chaque combinaison de verbe (action) et de type de ressource dans la location. Ils définissent une autorisation unique que vous devez affecter à un groupe d'utilisateurs pour les ressources cible. La liste n'est pas une fois définie et terminée. Commencez par un petit nombre de balises d'autorisation. Une fois que vous avez pris le contrôle du modèle de politique, vous pouvez ajouter d'autres balises d'autorisation. Pour ce tutoriel, nous allons créer un espace de noms de balise d'autorisation en tant que mgmt
. De plus, nous allons créer un espace de noms de balise (nous allons appeler infosec
) avec une clé de balise nommée gname
.
-
Pour la structure de compartiment suivante avec quatre types de ressource et pour affecter des droits d'accès de gestion et d'utilisation à ces ressources, nous allons créer des balises de droit d'accès.
-
Pour chaque droit d'accès que vous devez affecter à une cible (compartiments dans la plupart des cas), créez un groupe. Nous affectons des balises de droit d'accès aux ressources (à l'aide de balises par défaut de compartiment) et aux compartiments de ressource. La valeur de balise est le groupe qui doit disposer du droit d'accès donné sur la ressource cible.
-
Une fois les balises de droits d'accès définies, nous pouvons écrire des stratégies. En fin de compte, nous n'aurons besoin que d'une seule stratégie par balise de droit d'accès définie dans la location. La même stratégie pour le droit d'accès donné fonctionnera dans l'ensemble de la location.
-
Au fur et à mesure que nous intégrons davantage de charges de travail, s'il existe d'autres types de ressource à gérer, vous devrez peut-être ajouter d'autres balises de droit d'accès et stratégies pour ces balises. Sinon, il vous suffit d'affecter des balises d'autorisation existantes à la nouvelle charge globale avec un groupe d'utilisateurs qui doit disposer de l'accès. Nous n'avons pas besoin d'écrire de nouvelles stratégies pour la nouvelle charge globale.
Cette approche restera cohérente dans tous les exemples abordés ici, servant de base à la définition de stratégies et de groupes OCI IAM.
Exemple 1 : compartiment pour chaque application
Etape 1 : Obtenir une compréhension globale de l'activité du client
CompanyA est une entreprise technologique en pleine croissance qui développe et déploie plusieurs applications cloud natives pour ses clients. Chaque application s'adresse à un segment de clientèle spécifique, avec des exigences strictes en matière de sécurité et de conformité. Pour assurer l'isolement, l'évolutivité et un contrôle d'accès efficace, CompanyA organise ses ressources OCI à l'aide d'une approche de compartimentation structurée.
Etape 2 : Conception de la structure de compartiment pour la charge globale
Comme décrit, CompanyA suit le modèle de politique OCI IAM pour le redimensionnement de ses stratégies OCI IAM. Ils ont créé des compartiments distincts pour leurs applications afin de maintenir l'isolement des ressources.
Remarque : seuls les administrateurs doivent pouvoir gérer l'espace de noms de balise
mgmt
etinfosec
.
Etape 3 : conception des balises d'autorisation suivantes de combinaison de type Verb+Resource
Créez des groupes dans OCI.
-
Connectez-vous au domaine OCI IAM avec un compte d'administrateur disposant du privilège de création de groupes.
-
Accédez à Identité et sécurité et cliquez sur Domaines sous Identité.
-
Sélectionnez le compartiment et cliquez sur le domaine pour lequel créer les groupes.
-
Cliquez sur Groupes.
-
Définissez vos groupes en fonction des balises de droit d'accès. (Facultatif) Ajoutez vos utilisateurs à ces groupes.
Remarque : vous devrez créer des groupes pour une combinaison unique d'autorisation et de cible. Si le même groupe fonctionnel d'utilisateurs (NetworkAdmin) doit disposer d'un accès pour gérer le réseau sur toutes les cibles, vous avez besoin d'un seul groupe pour gérer l'accès sur toutes les cibles.
Voici les balises de droit d'accès et les groupes OCI IAM pour ces balises. Suivez les étapes ci-dessus pour créer des groupes pour chacune des balises d'autorisation définies.
-
Compartiment racine : le compartiment racine sert de couche de gestion de niveau supérieur. Où nos groupes d'administrateurs seront étiquetés avec des balises d'autorisation. Les balises suivantes :
- Administrateurs : droit d'accès
manageall
pour la gestion globale de la location. - UseAdministrators : droit d'accès
useall
permettant d'accéder aux ressources dans la location. - Auditeur : droit d'accès
readall
avec accès en lecture seule aux ressources pour la surveillance sur l'ensemble de la location.
- Administrateurs : droit d'accès
-
Modèle de compartiment par application : CompanyA dispose de plusieurs applications cloud. Nous allons créer un compartiment parent distinct pour chaque application. Examinons comment ce modèle s'applique à Application 1 (App1) et à Application 2 (App2) en tant que compartiments parent.
-
Application 1 (App1) : application orientée client hébergée sur OCI.
- Compartiment réseau : compartiment pour toutes les ressources liées au réseau, telles que les VCN, les sous-réseaux, etc. Maintenant, créons les balises de droit d'accès et leurs groupes OCI IAM respectifs.
- App1NetworkAdmin : balise de droit d'accès des ressources
managenetwork
pour les ingénieurs gérant les ressources réseau pour App1. - App1NetworkUser : balise de droit d'accès des ressources
usenetwork
pour les développeurs ayant besoin d'un accès limité aux configurations réseau de App1. - App1NetworkReader : balise de droit d'accès des ressources
readnetwork
pour les auditeurs qui vérifient la configuration réseau de App1.
- App1NetworkAdmin : balise de droit d'accès des ressources
- Compartiment de calcul : compartiment pour les instances de calcul. Maintenant, créons les balises de droit d'accès et leurs groupes OCI IAM respectifs.
- App1ComputeAdmin : balise de droit d'accès des ressources
managecompute
pour les administrateurs système qui provisionnent et redimensionnent les instances de calcul pour le back-end App1. - App1ComputeUser : balise de droit d'accès des ressources
usecompute
pour les développeurs qui déploient et testent les services back-end de App1. - App1ComputeReader : balise de droit d'accès des ressources
readcompute
pour les auditeurs surveillant l'utilisation des ressources de calcul pour App1.
- App1ComputeAdmin : balise de droit d'accès des ressources
- Compartiment de données : compartiment pour les ressources liées au stockage et à la base de données. Maintenant, créons les balises de droit d'accès et leurs groupes OCI IAM respectifs.
- App1DataAdmin : balise de droit d'accès des ressources
managedb
pour les administrateurs de base de données gérant les bases de données autonomes Oracle et OCI Object Storage pour App1. - App1DataUser : balise de droit d'accès aux ressources
usedb
pour les analystes de données accédant aux ensembles de données à des fins d'analyse par rapport à App1. - App1DataReader : balise de droit d'accès des ressources
readdb
pour les auditeurs qui vérifient les configurations de base de données de App1.
- App1DataAdmin : balise de droit d'accès des ressources
- Compartiment réseau : compartiment pour toutes les ressources liées au réseau, telles que les VCN, les sous-réseaux, etc. Maintenant, créons les balises de droit d'accès et leurs groupes OCI IAM respectifs.
-
Application 2 (App2) : système interne de planification des ressources d'entreprise (ERP) pour les opérations de CompanyA.
Remarque : ici également, nous suivrons la même approche de structure de compartiment et créerons le compartiment réseau, le compartiment de calcul et le compartiment de données sous le compartiment App2 parent. Pour éviter la redondance, nous allons simplement noter les balises de droit d'accès et les groupes OCI IAM pour App2.
-
Compartiment de réseau:
- App2NetworkAdmin : balise de droit d'accès des ressources
managenetwork
. - App2NetworkUser : balise de droit d'accès des ressources
usenetwork
. - App2NetworkReader : balise de droit d'accès des ressources
readnetwork
.
- App2NetworkAdmin : balise de droit d'accès des ressources
-
Compartiment de calcul :
- App2ComputeAdmin : balise de droit d'accès des ressources
managecompute
. - App2ComputeUser : balise de droit d'accès des ressources
usecompute
. - App2ComputeReader : balise de droit d'accès des ressources
readcompute
.
- App2ComputeAdmin : balise de droit d'accès des ressources
-
Compartiment de données:
- App2DataAdmin : balise de droit d'accès des ressources
managedb
. - App2DataUser : balise de droit d'accès des ressources
usedb
. - App2DataReader : balise de droit d'accès des ressources
readdb
.
- App2DataAdmin : balise de droit d'accès des ressources
-
-
Remarque : appliquez une balise de droit d'accès à une cible (la cible peut être une ressource ou un compartiment) afin de déterminer quel groupe aura ce droit d'accès spécifique sur la cible pour App1 et App2.
Etape 4 : écriture des stratégies OCI IAM pour ces balises de droit d'accès
Nous allons créer les stratégies pour CompanyA en utilisant la même approche que celle décrite ici : Have less be More - Scaling OCI IAM Policies for Groups. Pour cela, créez un espace de noms de balise (nous allons appeler infosec
) avec une clé de balise nommée gname
.
-
Connectez-vous au domaine OCI IAM avec un compte d'administrateur disposant du privilège de création de stratégies.
-
Accédez à Identité et sécurité et cliquez sur Stratégies sous Identité.
-
Sélectionnez le compartiment racine et cliquez sur Créer une stratégie.
-
Entrez le nom et la description de votre stratégie, puis ajoutez également les instructions de stratégie. Cliquez sur Créer.
-
Stratégie pour toutes les ressources :
Allow any-user to manage all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageall) Allow any-user to use all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useall) Allow any-user to read all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readall)
Remarque : suivez la même procédure pour définir toutes les stratégies mentionnées ci-dessous et ajouter leurs instructions de stratégie respectives.
-
Stratégie Cloudguard :
Allow any-user to manage cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecspm) Allow any-user to use cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecspm) Allow any-user to read cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcspm)
-
Stratégie réseau :
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to use virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useetwork) Allow any-user to read virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readnetwork)
-
Stratégie de calcul :
Allow any-user to manage instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecompute) Allow any-user to use instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecompute) Allow any-user to read instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcompute)
-
Stratégie de base de données :
Allow any-user to manage database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managedb) Allow any-user to use database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usedb) Allow any-user to read database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readdb)
-
Exemple 2 : compartiment pour chaque client/locataire
Etape 1 : Obtenir une compréhension globale de l'activité du client
CompanyB Solutions est un éditeur de logiciels indépendant de premier plan qui fournit des applications SaaS basées sur le locataire dans l'infrastructure cloud, la gestion des données et les analyses. CompanyB sert plusieurs clients dans tous les secteurs, offrant des solutions transparentes, sécurisées et évolutives. Leur succès dépend de l'utilisation d'OCI avec une structure compartimentale bien conçue pour gérer les ressources efficacement tout en respectant les exigences de sécurité et de conformité.
Etape 2 : Conception de la structure de compartiment pour la charge globale
CompanyB a isolé les charges globales pour ses clients et a créé un sous-compartiment dédié. Ils disposent également d'un compartiment réseau, d'un stockage partagé et d'un compartiment de base de données. Même CompanyB suit le modèle de politique OCI IAM pour le redimensionnement de ses stratégies OCI IAM.
Etape 3 : Concevoir les balises d'autorisation suivantes de combinaison de type Verb+Resource
Pour créer des groupes, reportez-vous à l'exemple 1, étape 3. Vous devrez créer des groupes pour toutes les balises d'autorisation définies ci-dessous.
-
Compartiment racine - Gouvernance centralisée : le composant racine sert de couche centrale pour la supervision de toutes les ressources et activités dans la location OCI. Où nos groupes d'administrateurs seront étiquetés avec des balises d'autorisation. Les balises suivantes :
- Administrateurs : droit d'accès
manageall
pour la gestion globale de la location. - UseAdministrators : droit d'accès
useall
permettant d'accéder aux ressources dans la location. - Auditeur : droit d'accès
readall
avec accès en lecture seule aux ressources pour la surveillance sur l'ensemble de la location.
- Administrateurs : droit d'accès
-
Compartiment réseau - Arête des opérations : le compartiment réseau prend en charge l'infrastructure réseau cloud d'EntrepriseB, permettant la connectivité sur toutes les ressources. Cela inclut les réseaux cloud virtuels, les sous-réseaux, les passerelles et les équilibreurs de charge. Définissez les balises de droit d'accès et les groupes OCI IAM correspondants.
- NetworkAdmin : balise de droit d'accès des ressources
managenetwork
pour les ingénieurs gérant les ressources réseau pour CompanyB. - NetworkUser : balise de droit d'accès des ressources
usenetwork
pour les développeurs ayant besoin d'un accès limité aux configurations réseau de CompanyB. - NetworkReader : balise de droit d'accès des ressources
readnetwork
pour les auditeurs qui vérifient la configuration réseau de CompanyB.
- NetworkAdmin : balise de droit d'accès des ressources
-
Compartiment de locataires - Compartiments isolés pour différentes charges globales client : le compartiment de locataires est structuré de manière à isoler les ressources et les charges globales pour chaque client (locataire). Cela garantit que CompanyB fournit des services sécurisés et privés tout en maintenant l'efficacité opérationnelle.
-
Compartiment du locataire 1 : le locataire 1 représente un client d'entreprise majeur qui utilise CompanyB pour le développement d'applications et les services de journalisation. Voici les balises de droit d'accès et les groupes OCI IAM respectifs :
t1devadmin
: le droit d'accès à la ressourcemanageappdev
pour l'équipe de développement du locataire 1 dispose de privilèges d'administration pour, configurer et déployer des applications personnalisées.t1devuser
: droit d'accès aux ressourcesuseappdev
pour surveiller et ajuster les ressources d'application. Les développeurs de Tenant 1 utilisent ces ressources pour le développement et les tests quotidiens.t1logsadmin
ett1devuser
: les droits d'accès aux ressourcesmanagelogs
etuselogs
pour la journalisation et les rôles de surveillance garantissent que les administrateurs configurent les services de journalisation tandis que les développeurs accèdent aux journaux pour déboguer et optimiser les applications.t1devadmin
ett1devuser
: droits d'accès aux ressourcesmanagecspm
etusecspm
pour le locataire 1, car ils se concentrent également sur l'état de sécurité, avec la possibilité de surveiller et de corriger les risques de sécurité.
-
Tenant 2 and Tenant 3 Compartments: The structure for Tenant 2 and Tenant 3 mirrors that of Tenant 1, with roles like
t2devadmin
,t2devuser
,t3devadmin
,t3devuser
,t2logsadmin
andt3logsadmin
ensuring that each tenant operates in a fully isolated environment. Cette approche permet à CompanyB de maintenir une gouvernance cohérente tout en répondant aux besoins spécifiques des locataires. -
Compartiment partagé - Ressources centralisées pour tous les locataires : le compartiment partagé inclut des ressources telles que les bases de données et le stockage d'objets que plusieurs locataires utilisent, mais reste logiquement séparé pour la confidentialité et la sécurité.
- Compartiment de base de données:
dbadmin
: le droit d'accès à la ressourcemanagedb
pour les administrateurs de base de données de CompanyB gère les bases de données partagées utilisées par tous les locataires, y compris le provisionnement, le redimensionnement et l'application de patches.dbuser
: le droit d'accès à la ressourceusedb
pour les utilisateurs propres au locataire accède à leurs schémas ou services de base de données respectifs.dbreader
: le droit d'accès à la ressourcereaddb
pour les auditeurs dispose d'un accès en lecture seule pour garantir que les configurations de base de données sont conformes aux stratégies de sécurité.
- Compartiment de stockage : OCI Object Storage est géré de manière centralisée, avec des buckets dédiés pour chaque locataire :
osadmin
: droit d'accès à la ressourcemanageobject
responsable de la gestion des ressources de stockage d'objet partagé.osuser
:useobject
droit d'accès à la ressource de stockage propre au locataire (ou exemple,t1osur
,t2osur
,t3osur
) garantit que les locataires accèdent uniquement à leurs buckets respectifs.osreader
: le droit d'accès aux ressourcesreadobject
pour les équipes de conformité vérifie les configurations de stockage et les modèles d'utilisation.
- Compartiment de base de données:
-
Etape 4 : écriture des stratégies OCI IAM pour ces balises de droit d'accès
Pour créer des stratégies, reportez-vous à l'exemple 1, étape 4. Vous devrez créer les stratégies suivantes.
-
Stratégie pour toutes les ressources :
Allow any-user to manage all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageall) Allow any-user to use all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useall) Allow any-user to read all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readall)
-
Stratégie Cloudguard :
Allow any-user to manage cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecspm) Allow any-user to use cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecspm) Allow any-user to read cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcspm)
-
Stratégie réseau :
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to use virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useetwork) Allow any-user to read virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readnetwork)
-
Stratégie de journalisation :
Allow any-user to manage logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managelogs) Allow any-user to use logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.uselogs) Allow any-user to read logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readlogs)
-
Stratégie Appdev :
Allow any-user to manage instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageappdev) Allow any-user to use instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useappdev) Allow any-user to read instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readappdev)
-
Stratégie de base de données :
Allow any-user to manage database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managedb) Allow any-user to use database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usedb) Allow any-user to read database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readdb)
-
Stratégie de stockage:
Allow any-user to manage object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageobject) Allow any-user to use object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useobject) Allow any-user to read object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readobject)
Exemple 3 : structure de compartiment d'entreprise de grande taille
Etape 1 : Obtenir une compréhension globale de l'activité du client
CompanyC Solutions, une organisation multinationale spécialisée dans les solutions logicielles innovantes, a décidé de migrer ses workloads stratégiques vers OCI. L'entreprise opère dans des secteurs hautement réglementés tels que la finance et la santé, où la sécurité, la conformité et l'évolutivité sont de la plus haute importance.
Etape 2 : Conception de la structure de compartiment pour la charge globale
Examinons maintenant la structure de compartiment pour CompanyC, qui suit le modèle de politique OCI IAM pour le redimensionnement de leurs stratégies OCI IAM.
Etape 3 : conception des balises d'autorisation suivantes de combinaison de type Verb+Resource
Pour créer des groupes, reportez-vous à l'exemple 1, étape 3. Vous devez créer des groupes pour toutes les balises d'autorisation suivantes.
-
Compartiment racine - Gouvernance centralisée : le composant racine sert de couche centrale pour la supervision de toutes les ressources et activités dans la location OCI. Où nos groupes d'administrateurs seront étiquetés avec des balises d'autorisation. Les balises suivantes :
- Administrateurs : droit d'accès
manageall
pour la gestion globale de la location. - UseAdministrators : droit d'accès
useall
permettant d'accéder aux ressources dans la location. - Auditeur : droit d'accès
readall
avec accès en lecture seule aux ressources pour la surveillance sur l'ensemble de la location.
- Administrateurs : droit d'accès
-
Compartiment PROD : compartiment permettant d'héberger des charges globales de production stratégiques qui ont un impact direct sur les opérations métier et les utilisateurs finaux. Chaque application dispose de son sous-compartiment dédié pour l'isolation des ressources et la gestion optimisée. Définissez les balises de droit d'accès et les groupes OCI IAM correspondants.
- NetworkAdmin : balise de droit d'accès des ressources
managenetwork
pour les ingénieurs gérant les ressources réseau pour CompanyC. - NetworkReader : balise de droit d'accès des ressources
readnetwork
pour les auditeurs qui vérifient la configuration réseau de CompanyC. - ComputeAdmin : balise de droit d'accès des ressources
managecompute
pour les administrateurs système qui provisionnent et redimensionnent les instances de calcul pour CompanyC. - ComputeReader : balise de droit d'accès des ressources
readcompute
pour les auditeurs surveillant l'utilisation des ressources de calcul pour CompanyC. - StorageReader : droit d'accès à la ressource
manageobject
permettant aux équipes d'administration du stockage de gérer les configurations de stockage. - StorageReader : le droit d'accès aux ressources
readobject
pour les équipes de conformité vérifie les configurations de stockage et les modèles d'utilisation. - SecurityAdmin : droit d'accès à la ressource
managecspm
pour Compartment PROD, car ils se concentrent également sur l'état de sécurité, avec la possibilité de surveiller et de corriger les risques de sécurité.
Nous allons maintenant définir les balises de droit d'accès et les groupes OCI IAM respectifs pour les sous-compartiments propres aux applications. Dans l'intérêt du temps, nous avons fusionné et défini des autorisations pour tous les 3 compartiments d'application différents.
- Compartiments d'application :
- PRApp1NetAdmin, PRApp2NetAdmin et PRApp3NetAdmin : les groupes OCI IAM d'administration avec la balise de droit d'accès des ressources
managenetwork
pour les ingénieurs gérant les ressources réseau pour App1, App2 et App3 respectivement. - PRApp1NetUser, PRApp2NetUser et PRApp3NetUser : les groupes OCI IAM d'administration avec la balise de droit d'accès des ressources
usenetwork
pour les ingénieurs gérant les ressources réseau pour App1, App2 et App3 respectivement. - PRApp1ComputeAdmin, PRApp2ComputeAdmin et PRApp3ComputeAdmin : les groupes OCI IAM d'administration avec la balise de droit d'accès des ressources
managecompute
pour les ingénieurs gérant les instances OCI Compute pour App1, App2 et App3 respectivement. - PRApp1ComputeUser, PRApp2ComputeUser et PRApp3ComputeUser : les groupes OCI IAM d'administration avec la balise de droit d'accès des ressources
usecompute
pour les ingénieurs qui utilisent des instances OCI Compute pour App1, App2 et App3 respectivement. - PRApp1StorageAdmin, PRApp2StorageAdmin et PRApp3StorageAdmin : les groupes OCI IAM d'administration avec la balise de droit d'accès des ressources
manageobject
pour les ingénieurs gérant OCI Object Storage pour App1, App2 et App3 respectivement. - PRApp1StorageUser, PRApp2StorageUser et PRApp3StorageUser : les groupes OCI IAM d'administration avec la balise de droit d'accès des ressources
useobject
pour les ingénieurs qui utilisent OCI Object Storage pour App1, App2 et App3 respectivement.
- PRApp1NetAdmin, PRApp2NetAdmin et PRApp3NetAdmin : les groupes OCI IAM d'administration avec la balise de droit d'accès des ressources
- NetworkAdmin : balise de droit d'accès des ressources
-
Compartiment NPROD : dédié aux environnements de transfert, de développement et d'assurance qualité. Ce compartiment est structuré de la même manière que PROD pour assurer la cohérence. Définissez les balises de droit d'accès et les groupes OCI IAM correspondants.
- NetworkAdmin : balise de droit d'accès des ressources
managenetwork
pour les ingénieurs gérant les ressources réseau pour CompanyC. - NetworkReader : balise de droit d'accès des ressources
readnetwork
pour les auditeurs qui vérifient la configuration réseau de CompanyC. - ComputeAdmin : balise de droit d'accès des ressources
managecompute
pour les administrateurs système qui provisionnent et redimensionnent les instances OCI Compute pour CompanyC. - ComputeReader : balise de droit d'accès des ressources
readcompute
pour les auditeurs qui surveillent l'utilisation des ressources OCI Compute pour CompanyC. - StorageReader : droit d'accès à la ressource
manageobject
permettant aux équipes d'administration du stockage de gérer les configurations de stockage. - StorageReader : le droit d'accès aux ressources
readStorage
pour les équipes de conformité vérifie les configurations de stockage et les modèles d'utilisation. - SecurityAdmin : droit d'accès à la ressource
managecspm
pour le compartiment NPROD, car ils se concentrent également sur l'état de sécurité, avec la possibilité de surveiller et de corriger les risques de sécurité.
De même, nous allons maintenant définir les balises de droit d'accès et les groupes OCI IAM respectifs pour les sous-compartiments propres aux applications.
- Compartiments d'application :
- NPApp1NetAdmin, NPApp2NetAdmin et NPApp3NetAdmin : les groupes OCI IAM d'administration avec la balise de droit d'accès des ressources
managenetwork
pour les ingénieurs gérant les ressources réseau pour App1, App2 et App3 respectivement. - NPApp1NetUser, NPApp2NetUser et NPApp3NetUser : les groupes OCI IAM d'administration avec la balise de droit d'accès des ressources
usenetwork
pour les ingénieurs gérant les ressources réseau pour App1, App2 et App3 respectivement. - NPApp1ComputeAdmin, NPApp2ComputeAdmin et NPApp3ComputeAdmin : les groupes OCI IAM d'administration avec la balise de droit d'accès des ressources
managecompute
pour les ingénieurs gérant les instances OCI Compute pour App1, App2 et App3 respectivement. - NPApp1ComputeUser, NPApp2ComputeUser et NPApp3ComputeUser : les groupes OCI IAM d'administration avec la balise de droit d'accès des ressources
usecompute
pour les ingénieurs qui utilisent des instances OCI Compute pour App1, App2 et App3 respectivement. - NPApp1StorageAdmin, NPApp2StorageAdmin et NPApp3StorageAdmin : les groupes OCI IAM d'administration avec la balise de droit d'accès des ressources
manageobject
pour les ingénieurs gérant OCI Object Storage pour App1, App2 et App3 respectivement. - NPApp1StorageUser, NPApp2StorageUser et NPApp3StorageUser : les groupes OCI IAM d'administration avec la balise de droit d'accès des ressources
useobject
pour les ingénieurs qui utilisent OCI Object Storage pour App1, App2 et App3 respectivement.
- NPApp1NetAdmin, NPApp2NetAdmin et NPApp3NetAdmin : les groupes OCI IAM d'administration avec la balise de droit d'accès des ressources
- NetworkAdmin : balise de droit d'accès des ressources
-
Compartiment partagé : le compartiment partagé héberge des ressources pour la surveillance, telles que la journalisation et les services OCI Cloud Guard. Il dispose également de clés de chiffrement et de déchiffrement qui sont utilisées par plusieurs locataires tout en assurant une ségrégation logique pour maintenir la confidentialité et la sécurité. Tous les administrateurs de vos applications nécessitant l'accès à ces services seront ajoutés aux groupes OCI IAM créés pour ces services. Définissez les balises de droit d'accès et les groupes OCI IAM correspondants.
-
Compartiments Oracle Cloud Guard :
cspmAdmin
: les groupes OCI IAM d'administration avec la balise de droit d'accès des ressourcesmanagecspm
pour les administrateurs gérant Oracle Cloud Guard pour les compartiments PROD et non PROD.cspmUser
: les groupes OCI IAM avec la balise de droit d'accès des ressourcesusecspm
pour les ingénieurs qui utilisent/surveillent Oracle Cloud Guard pour les compartiments PROD et non PROD.cspmReader
: les groupes OCI IAM avec la balise de droit d'accès des ressourcesreadcspm
pour les ingénieurs qui lisent Oracle Cloud Guard pour les compartiments PROD et non PROD.
-
Compartiments de journalisation OCI :
logsAdmin
: les groupes OCI IAM d'administration avec la balise de droit d'accès des ressourcesmanagelogs
pour les administrateurs gérant OCI Logging pour les compartiments PROD et non PROD.logsUser
: les groupes OCI IAM avec la balise de droit d'accès des ressourcesuselogs
pour les ingénieurs qui utilisent/surveillent OCI Logging pour les compartiments PROD et non PROD.logsReader
: les groupes OCI IAM avec la balise de droit d'accès des ressourcesreadlogs
pour les ingénieurs qui lisent OCI Logging pour les compartiments PROD et non PROD.
-
Compartiments de clés :
kmsAdmin
: les groupes OCI IAM d'administration avec la balise de droit d'accès des ressourcesmanagekeys
pour les administrateurs gérant le coffre de clés pour les compartiments PROD et non PROD.kmsUser
: les groupes OCI IAM avec la balise de droit d'accès des ressourcesusekeys
pour les ingénieurs qui utilisent/surveillent le coffre de clés pour les compartiments PROD et non PROD.kmsReader
: les groupes OCI IAM avec la balise de droit d'accès des ressourcesreadkeys
pour les ingénieurs qui lisent le coffre de clés pour les compartiments PROD et non PROD.
-
-
Compartiment de terrain de jeu : environnement flexible et isolé destiné à l'expérimentation, au développement et aux tests. Ce compartiment n'est pas lié aux contraintes de production ou de conformité, ce qui le rend idéal pour l'innovation. Ici, nous n'aurons qu'un seul groupe d'administrateurs OCI IAM pour le compartiment très enfant et accorderons les privilèges de gestion à toutes les ressources OCI nécessaires pour les exigences de test.
-
Compartiments de développement :
DevAdmin
: les groupes OCI IAM d'administration avec le droit d'accès aux ressourcesmanagenetwork
,managecompute
,manageobject
,managekeys
,managelogs
pour les administrateurs de développement afin de tester une nouvelle implémentation dans le compartiment de développement.
-
Compartiments de test :
TestAdmin
: les groupes OCI IAM d'administration avec le droit d'accès aux ressourcesmanagenetwork
,managecompute
,manageobject
,managekeys
,managelogs
pour les administrateurs de développement afin de tester une nouvelle implémentation dans le compartiment de test.
-
Compartiments de test des performances :
PerfTestAdmin
: les groupes OCI IAM d'administration avec le droit d'accès aux ressourcesmanagenetwork
,managecompute
,manageobject
,managekeys
,managelogs
pour les administrateurs de développement afin de tester une nouvelle implémentation dans le compartiment de test des performances.
-
Etape 4 : écriture des stratégies OCI IAM pour ces balises de droit d'accès
Pour créer des stratégies, reportez-vous à l'exemple 1, étape 4. Vous devez créer les stratégies suivantes.
-
Stratégie pour toutes les ressources :
Allow any-user to manage all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageall) Allow any-user to use all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useall) Allow any-user to read all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readall)
-
Stratégie de journalisation :
Allow any-user to manage logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managelogs) Allow any-user to use logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.uselogs) Allow any-user to read logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readlogs)
-
Stratégie Cloudguard :
Allow any-user to manage cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecspm) Allow any-user to use cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecspm) Allow any-user to read cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcspm)
-
Stratégie de clés
Allow any-user to manage keys in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managekeys) Allow any-user to use keys in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usekeys) Allow any-user to read keys in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readkeys)
-
Stratégie d'application:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to use virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useetwork) Allow any-user to manage instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecompute) Allow any-user to use instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecompute) Allow any-user to manage object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageobject) Allow any-user to use object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useobject)
-
Politique de terrain de jeu :
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to manage object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageobject) Allow any-user to manage logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managelogs) Allow any-user to manage vaults in compartment Playground where request.principal.group.tag.infosec.gname=target.compartment.tag.mgmt.manageVaults Allow any-user to manage keys in compartment Playground where request.principal.group.tag.infosec.gname=target.compartment.tag.mgmt.manageKeys
Remarque : pour ce scénario, chaque fois que vous intégrez une nouvelle charge globale :
- Vérifiez si vous avez besoin de balises d'autorisation supplémentaires. Si vous le faites, créez-les avec les stratégies OCI IAM pour ces balises de droit d'accès.
- Créez des groupes pour gérer l'accès au nouveau compartiment de charge globale.
- Balisez le compartiment de charge globale à l'aide de balises de droit d'accès et des groupes créés.
Modèle d'autorisation basé sur des balises pour le contrôle d'accès affiné
Jusqu'à présent, tous les exemples, nous avons discuté des autorisations de création, d'utilisateur ou de lecture pour une famille de ressources. Cependant, la plupart des clients ont besoin d'un contrôle d'accès granulaire pour suivre le modèle de moindre privilège. Le tutoriel se concentre sur la compréhension du modèle de politique, c'est pourquoi nous avons parlé d'un cas d'utilisation simple. Cependant, permettez-moi de prendre un exemple de quatre personnes réseau et de vous expliquer comment concevoir des balises de droit d'accès granulaires et des stratégies OCI IAM pour ces quatre personas.
-
NetworkOwner : cette personne ou équipe est propriétaire de l'implémentation réseau pour la location OCI. Ils ont accès à la configuration de FastConnect et aux droits d'accès permettant de gérer le réseau pour toutes les applications.
-
NetworkAdmin : cette équipe est propriétaire de l'implémentation réseau pour les équipes d'application. Ils peuvent créer des réseaux cloud virtuels pour les équipes d'applications. Cependant, ils n'ont pas accès à la configuration d'un pare-feu réseau ou de FastConnect.
-
NetworkOperator : cette équipe est propriétaire du réseau de l'application. L'équipe peut créer un sous-réseau d'application dans le VCN de l'application ou un VCN partagé. Toutefois, ils ne sont pas autorisés à gérer ou à mettre à jour les réseaux cloud virtuels.
-
NetworkUser : équipe d'administration d'application qui requiert des droits d'accès d'utilisation sur les ressources réseau d'application.
Nous définirons networkowner
, networkadmin
, networkoperator
et networkuser
en tant que quatre balises sur le compartiment réseau. Pour ces balises, nous allons affecter des noms de groupe qui ont accès au compartiment réseau.
-
Stratégie NetworkOwner :
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkowner)
-
Stratégie NetworkAdmin :
Allow any-user to manage vcns in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage subnets in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage route-tables in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage security-lists in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage network-security-groups in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage dhcp-options in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage local-peering-gateways in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage service-gateways in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage internet-gateways in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin)
-
Stratégie NetworkOperator :
Allow any-user to {VCN_ATTACH,VCN_DETACH} in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to inspect vcns in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage subnets in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage route-tables in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage security-lists in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage network-security-groups in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage dhcp-options in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator)
-
Stratégie NetworkUser :
Allow any-user to inspect vcns in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use subnets in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use vnics in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use security-lists in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use network-security-groups in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser)
Redimensionnement des stratégies OCI IAM pour les ID instance
Exemple 1 : contrôle d'accès aux instances colocatives pour le stockage partagé et les clés secrètes dans OCI
Etape 1 : Obtenir une compréhension globale de l'activité du client
XYZ Cloud Solutions est un fournisseur SaaS proposant un système de gestion des documents (DMS) hébergé sur OCI. La plate-forme sert plusieurs clients professionnels, chacun nécessitant une isolation stricte de ses données tout en tirant parti d'une infrastructure partagée.
Exigences client :
- Chaque entreprise (locataire) doit disposer d'instances isolées pour traiter et gérer les documents.
- Les clés secrètes de chaque locataire (clés d'API, informations d'identification de base de données) doivent être accessibles uniquement aux instances de ce locataire.
- Tous les locataires stockent leurs documents dans un compartiment OCI Object Storage centralisé, mais ils doivent uniquement accéder à leur propre bucket.
- Le système doit prendre en charge l'évolutivité automatique et l'intégration facile des nouveaux locataires.
Etape 2 : Conception de la structure de compartiment pour la charge globale
Examinons maintenant la structure de compartiment pour les solutions cloud XYZ, qui suit le modèle de politique OCI IAM pour le redimensionnement de leurs stratégies OCI IAM.
-
Isolement de locataire avec des compartiments :
- Créez un compartiment OCI dédié pour chaque client d'entreprise (Tenant1, Tenant2, etc.).
- Déployez des instances de calcul (VM, fonctions ou conteneurs) dans leurs compartiments respectifs.
- Stockage centralisé avec contrôle d'accès.
-
Maintenance d'un compartiment de stockage partagé pour les buckets OCI Object Storage :
- Chaque locataire obtient un bucket dédié, balisé avec
Enterprise.Tenant=<TenantName>
. - Les stratégies OCI IAM garantissent que les instances de chaque locataire peuvent uniquement lire à partir de leur propre bucket.
- Gestion des clés secrètes avec OCI Vault.
- Chaque locataire obtient un bucket dédié, balisé avec
-
Stockez les informations d'identification de base de données, les clés d'API et les clés de cryptage dans OCI Vault :
- Les clés secrètes de chaque locataire sont balisées avec
Enterprise.Tenant=<TenantName>
. - Les stratégies OCI IAM permettent uniquement aux instances de ce locataire d'extraire leurs clés secrètes.
- Stratégie de balisage d'entreprise pour la gouvernance.
- Les clés secrètes de chaque locataire sont balisées avec
-
Définissez un espace de noms de balise Enterprise avec
Enterprise.Tenant
pour suivre la propriété du locataire :- Appliquez des balises de compartiment par défaut pour baliser automatiquement les ressources dans le compartiment de chaque locataire.
- Utilisez des stratégies basées sur des balises pour un contrôle d'accès automatisé.
Etape 3 : création de groupes OCI IAM
Pour assurer une gestion des accès sécurisée et isolée dans un environnement colocatif OCI, les stratégies suivantes seront définies pour :
-
Groupe InfoSec : administrateurs de sécurité ayant accès à la gestion des stratégies, des balises, des utilisateurs et des groupes.
-
Groupe d'exécuteurs Terraform : groupe d'exécution Infrastructure-as-Code (IaC) pour la gestion des ressources OCI.
Remarque : ces groupes et stratégies OCI IAM sont déjà créés comme décrit ci-dessus dans la section Stratégies OCI IAM courantes.
Etape 4 : création de stratégies OCI IAM pour les groupes définis
Stratégies d'accès aux ressources de locataire : pour assurer l'isolement des données, les ressources de locataire doivent uniquement pouvoir accéder à leurs propres clés secrètes et au stockage d'objets.
Allow any-user to use object-family in compartment Storage where request.principal.compartment.tag.Enterprise.Tenant = target.resource.tag.Enterprise.Tenant
Allow any-user to use secret-family in compartment Tenants where request.principal.compartment.tag.Enterprise.Tenant = target.resource.tag.Enterprise.Tenant
Si les principes d'instance de locataire requièrent également des droits d'accès permettant de créer des objets, vous pouvez créer des noms de bucket portant le même nom que le nom de locataire et utiliser une balise de nom de locataire pour effectuer une comparaison avec le nom de bucket.
Allow any-user to manage objects in compartment Storage where request.principal.compartment.tag.Enterprise.Tenant = target.bucket.name
Exemple 2 : contrôle d'accès de niveau fin pour l'accès aux données multi-services dans un modèle de stockage OCI partagé
Etape 1 : Obtenir une compréhension globale de l'activité du client
XYZ Corp est une entreprise en pleine croissance spécialisée dans les solutions de transformation numérique. Avec une présence mondiale, XYZ Corp opère dans plusieurs régions et exploite OCI pour héberger des applications critiques, gérer les données et assurer une collaboration transparente entre les équipes.
Exigences client :
- Toutes les instances du service d'administration d'un locataire spécifique peuvent lire les buckets d'administration dans le compartiment de stockage partagé.
- Toutes les instances du service de vente d'un locataire spécifique peuvent lire les buckets de vente dans le compartiment de stockage partagé.
- Toutes les instances du service d'approvisionnement d'un locataire spécifique peuvent lire les buckets d'approvisionnement dans le compartiment de stockage partagé.
- Toutes les instances d'un locataire spécifique peuvent lire les buckets Shared Services dans le compartiment de stockage partagé.
- Toutes les instances d'un locataire spécifique peuvent lire des clés secrètes pour ce locataire dans le compartiment du locataire.
Etape 2 : Conception de la structure de compartiment pour la charge globale
Examinons maintenant la structure de compartiment de XYZ Corp, qui suit le modèle de politique OCI IAM pour le redimensionnement de ses stratégies OCI IAM.
-
Création de compartiment propre au locataire :
- Créez un compartiment dédié pour chaque locataire.
- Toutes les ressources appartenant à un locataire doivent être provisionnées dans son compartiment.
-
Espace de noms de balisage Enterprise :
- Définissez un espace de noms de balise Enterprise avec les clés de balise suivantes :
Enterprise.Tenant
capture le nom du locataire.Enterprise.Service
capture le type de service. Par exemple, Admin, Ventes, Approvisionnement ou Partagé.
- Définissez un espace de noms de balise Enterprise avec les clés de balise suivantes :
-
Balises par défaut pour les compartiments de locataire :
- Configurez des balises par défaut de compartiment pour chaque compartiment de locataire, en veillant à ce que la balise
Enterprise.Tenant
soit automatiquement appliquée à toutes les ressources du compartiment, en capturant le nom du locataire.
- Configurez des balises par défaut de compartiment pour chaque compartiment de locataire, en veillant à ce que la balise
-
Balisage au niveau de la ressource :
- Chaque ressource d'un compartiment de locataire doit être balisée avec
Enterprise.Service
pour indiquer le type de service. Par exemple, Admin, Ventes, Approvisionnement, etc.
- Chaque ressource d'un compartiment de locataire doit être balisée avec
-
Balisage de ressource cible (catégories et clés secrètes) :
- Baliser chaque ressource cible (telle que les buckets et les clés secrètes) avec :
Enterprise.Tenant
capture le nom du locataire.Enterprise.Service
capture le type de service associé.
- Baliser chaque ressource cible (telle que les buckets et les clés secrètes) avec :
-
Balisage de buckets partagés :
- Pour les ressources de bucket partagé, définissez
Enterprise.Service = 'Shared'
pour indiquer l'accessibilité entre services.
- Pour les ressources de bucket partagé, définissez
Etape 3 : création de groupes OCI IAM
Pour assurer une gestion des accès sécurisée et isolée dans un environnement colocatif OCI, les stratégies suivantes seront définies pour :
-
Groupe InfoSec : administrateurs de sécurité ayant accès à la gestion des stratégies, des balises, des utilisateurs et des groupes.
-
Groupe d'exécuteurs Terraform : groupe d'exécution Infrastructure-as-Code (IaC) pour la gestion des ressources OCI.
-
Groupe dynamique AdminInstances : avec la règle de correspondance
All {tag.Enterprise.Service.value=’Admin’}
. -
Groupe dynamique SalesInstances : avec la règle de correspondance
All {tag.Enterprise.Service.value=’Sales’}
. -
Groupe dynamique SupplyInstances : avec la règle de correspondance
All {tag.Enterprise.Service.value=’Supply’}
.
Remarque : les groupes InfoSec et Terraform-Runner et les stratégies IAM sont déjà créés, comme décrit ci-dessus dans la section Stratégies OCI IAM courantes.
Etape 4 : création de stratégies OCI IAM pour les groupes définis
Stratégies d'accès aux ressources de locataire : pour assurer l'isolement des données, les ressources de locataire doivent uniquement pouvoir accéder à leurs propres clés secrètes et au stockage d'objets.
Allow dynamic-group AdminInstances to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Admin’}
Allow dynamic-group SalesInstances to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Sales’}
Allow dynamic-group SupplyInstances to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Supply’}
Allow any-user to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Shared’}
Allow dynamic-group AdminInstances to use secret-family in compartment Tenants where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Admin’}
Allow dynamic-group SalesInstances to use secret-family in compartment Tenants where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Sales’}
Allow dynamic-group SupplyInstances to use secret-family in compartment Tenants where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Supply’}
Liens connexes
Remerciements
-
Auteur - Chetan Soni (ingénieur cloud senior)
-
Contributeur - Kiran Thakkar (architecte cloud principal)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation produit, consultez le site Oracle Help Center.
Deep Dive into Tag based Oracle Cloud Infrastructure Identity and Access Management Policies
G30366-01
Copyright ©2025, Oracle and/or its affiliates.