Sécurisation du gestionnaire de ressources

Cette rubrique fournit des informations de sécurité et des recommandations relatives au gestionnaire de ressources.

Le gestionnaire des ressources vous permet d'automatiser le provisionnement des ressources Oracle Cloud Infrastructure en insérant les instructions dans des fichiers de configuration. Ce faisant, vous assurez que les ressources provisionnées respectent les directives de sécurité de votre organisation. Ces fichiers de configuration saisissent les instructions de provisionnement étape par étape à l'aide d'un langage déclaratif qui suit le modèle "infrastructure en tant que code". Les instructions de provisionnement sont exécutées en tant que tâches.

Responsabilités en matière de sécurité

Pour utiliser le gestionnaire de ressources en toute sécurité, découvrez vos responsabilités en matière de sécurité et de conformité.

En général, Oracle assure la sécurité de l'infrastructure et des opérations en nuage, comme les contrôles de l'accès des opérateurs au nuage et l'application de correctifs de sécurité à l'infrastructure. Vous êtes responsable de la configuration sécurisée de vos ressources en nuage. La sécurité dans le nuage est une responsabilité partagée entre vous et Oracle.

Oracle est responsable des exigences de sécurité suivantes :

  • Physical Security : :Oracle est responsable de la protection de l'infrastructure globale qui exécute tous les services offerts dans Oracle Cloud Infrastructure. Cette infrastructure se compose du matériel, du logiciel, du réseau et des installations qui exécutent les services Oracle Cloud Infrastructure.

Vos responsabilités en matière de sécurité sont décrites dans cette page, qui comprend les domaines suivants :

  • Contrôle de l'accès : Limitez le plus possible les privilèges. Les utilisateurs ne doivent disposer que de l'accès nécessaire pour effectuer leur travail.
  • Confidentialité : Limiter l'utilisation de données sensibles dans les fichiers de configuration et de sortie

Tâches de sécurité initiales

Utilisez cette liste de vérification pour identifier les tâches que vous effectuez pour sécuriser le gestionnaire de ressources d'une nouvelle location Oracle Cloud Infrastructure.

Tâche Informations supplémentaires
Utiliser les politiques GIA pour accorder l'accès aux utilisateurs et aux ressources Politiques GIA

Tâches de sécurité régulières

Après avoir commencé à utiliser le gestionnaire de ressources, utilisez cette liste de vérification pour identifier les tâches de sécurité que nous vous recommandons d'effectuer régulièrement.

Tâche Informations supplémentaires
Limiter l'utilisation d'informations sensibles dans les fichiers de configuration et de sortie Confidentialité
Vérifier la sécurité Vérification

Politiques GIA

Utilisez des politiques pour limiter l'accès au gestionnaire de ressources.

Important

Des politiques pour gérer les ressources Oracle Cloud Infrastructure sont également requises pour les opérations du gestionnaire de ressources qui accèdent aux ressources. Par exemple, l'exécution d'une tâche d'application sur une pile qui inclut des instances de calcul et des sous-réseaux nécessite des politiques qui vous accordent des autorisations pour ces types de ressource, dans les compartiments où vous voulez les provisionner. Pour voir des exemples de politiques relatives à la gestion des ressources Oracle Cloud Infrastructure, voir Politiques communes.

Une politique indique qui peut accéder aux ressources Oracle Cloud Infrastructure et comment. Pour plus d'informations, voir Fonctionnement des politiques.

Affectez à un groupe les privilèges minimaux nécessaires à l'exercice de ses responsabilités. Chaque politique comporte un verbe qui décrit les actions que le groupe est autorisé à effectuer. De l'accès le plus restreint à l'accès le plus élevé, les verbes disponibles sont les suivants : inspect, read, use et manage.

Pour plus d'informations sur les politiques du gestionnaire de ressources, voir Informations détaillées sur le gestionnaire de ressources.

Gérer les piles et les tâches

Créez cette politique pour autoriser un groupe à gérer des piles et des travaux dans la location, ainsi qu'à gérer les ressources Oracle Cloud Infrastructure sur les piles de la location.

Allow group <group_name> to manage orm-stacks in tenancy
Allow group <group_name> to manage orm-jobs in tenancy

Créez cette politique pour empêcher explicitement un groupe d'exécuter des tâches de destruction.

Note

Dans cet énoncé de politique, vous devez inclure la nouvelle autorisation pour read orm-jobs car le troisième énoncé inclut une condition qui utilise des variables non pertinentes pour lister ou obtenir des tâches.
Allow group <group_name> to use orm-stacks in tenancy
Allow group <group_name> to read orm-jobs in tenancy
Allow group <group_name> to manage orm-jobs in tenancy where any {target.job.operation = 'PLAN', target.job.operation = 'APPLY'}

Pour plus de détails sur les autorisations de pile, voir orm-stacks. Pour plus de détails sur les autorisations d'emploi, voir orm-jobs.

Gérer les fournisseurs de source de configuration

Créez cette politique pour accorder à un groupe l'autorisation de créer, mettre à jour, déplacer et supprimer des fournisseurs de source de configuration dans la location.

Allow group <group_name> to manage orm-config-source-providers in tenancy

Créez cette politique pour accorder à un groupe l'autorisation de créer des piles à partir de fichiers de configuration dans des systèmes de contrôle de code source (à l'aide de fournisseurs sources de configuration existants), en plus de gérer les piles et les tâches.

Allow group <group_name> to read orm-config-source-providers in tenancy
Allow group <group_name> to manage orm-stacks in tenancy
Allow group <group_name> to manage orm-jobs in tenancy

Pour plus de détails sur les autorisations du fournisseur de source de configuration, voir orm-config-source-providers.

Gérer les modèles privés

Créez cette politique pour accorder à un groupe l'autorisation de créer, mettre à jour, déplacer et supprimer des modèles privés dans la location.

Allow group <group_name> to manage orm-template in tenancy

Créez cette politique pour accorder à un groupe l'autorisation de créer des piles à partir de modèles privés, en plus de gérer les piles et les tâches.

Allow group <group_name> to manage orm-stacks in tenancy
Allow group <group_name> to manage orm-jobs in tenancy
Allow group <group_name> to read orm-templates in tenancy

Pour plus de détails sur les autorisations de modèle privé, voir orm-templates.

Gérer les points d'extrémité privés

Créez cette politique pour accorder à un groupe l'autorisation de créer, mettre à jour, déplacer et supprimer des points d'extrémité privés dans la location, notamment la possibilité de sélectionner des réseaux en nuage virtuels et des sous-réseaux lors de la création de points d'extrémité privés.

Allow group <group_name> to manage orm-private-endpoints in tenancy
  where any request.operation={'CreatePrivateEndpoint'}"
Allow group <group_name> to use virtual-network-family in tenancy

Pour plus de détails sur les autorisations de point d'extrémité privé, voir orm-private-endpoints.

Confidentialité

Gérer et contrôler l'accès aux informations sensibles dans le gestionnaire de ressources.

Fichiers d'état Terraform

L'état Terraform (.tfstate) peut contenir des données sensibles, notamment des ID ressource, des mots de passe et des clés SSH. Utilisez le service de chambre forte pour gérer et faire pivoter les données d'identification de clé secrète que vous utilisez avec le gestionnaire de ressources.

Une chambre forte comprend les clés de chiffrement et les clés secrètes que vous utilisez pour protéger vos données et vous connecter à des ressources sécurisées. Les clés secrètes sont chiffrées à l'aide des clés de chiffrement principales et stockent les données d'identification telles que les mots de passe, les certificats, les clés SSH ou les jetons d'authentification. Avant de créer et d'utiliser des clés secrètes, vous devez créer une chambre forte et une clé de chiffrement principale si elles n'existent pas.

Par exemple, vous avez besoin d'une clé SSH pour exécuter des commandes et des scripts distants sur une instance de calcul. Voir Utilisation de la fonctionnalité Remote Exec.

Une version de clé secrète est affectée automatiquement à chaque clé secrète. Lorsque vous effectuez la rotation d'une clé secrète, vous générez une nouvelle version de clé secrète en fournissant un nouveau contenu de clé secrète au service de chambre forte. La rotation périodique du contenu des clés secrètes permet de limiter l'incidence de l'exposition d'une clé secrète.

Pour contrôler l'accès au fichier d'état Terraform, vous pouvez créer une politique de sécurité qui limite l'accès à la lecture des tâches, comme ci-dessous :

Allow group <group_name> to read orm-jobs in compartment

Tout utilisateur disposant de l'autorisation ORM_JOB_READ peut accéder aux fichiers d'états Terraform.

Note

Comme l'autorisation read orm-jobs a également une incidence sur d'autres opérations telles que l'obtention des journaux et des configurations Terraform, nous vous recommandons de séparer les fichiers d'état dans un compartiment pour lequel une politique restrictive ne limite pas la possibilité d'effectuer d'autres opérations.

Configurations Terraform

Le flux de travail du gestionnaire de ressources comprend généralement l'écriture ou la génération d'une configuration Terraform, qui est ensuite utilisée pour gérer votre pile. Comme la configuration Terraform est accessible au moyen de l'API GetJobTfConfig du gestionnaire de ressources, vous ne devez pas inclure d'informations sensibles dans vos fichiers de configuration.

Tout utilisateur disposant de l'autorisation ORM_JOB_READ peut accéder aux configurations Terraform.

Sécurité du réseau

Accès réseau sécurisé à vos ressources dans le service Resource Manager, y compris les serveurs Git privés et les ressources en nuage auxquelles vous accédez à partir du gestionnaire de ressources.

Au lieu d'exposer les ressources privées et le trafic réseau correspondant au public, utilisez des points d'extrémité privés pour accéder à distance à ces ressources.

Use security lists , network security groups , or a combination of both to control packet-level traffic in and out of the resources in your VCN (virtual cloud network) . Voir Accès et sécurité.

Lorsque vous configurez un groupe de sécurité de réseau à utiliser avec un point d'extrémité privé, incluez les règles suivantes.

  • Règle de trafic sortant autorisant le trafic vers la ressource non publique.

    Exemples pour une instance de calcul non publique à l'adresse IP 192.168.227.87 :

    • Accès minimal : 192.168.227.87/32
    • Accès général au VCN et au bloc CIDR du sous-réseau : 192.168.0.0/16
  • Règle de trafic entrant autorisant le trafic à partir du point d'extrémité privé.

    Exemples pour une instance de calcul non publique à l'adresse IP 192.168.227.87 :

    • Accès minimal : 192.168.198.204/32 (Type de source : CIDR)
    • Accès général à partir du bloc CIDR du sous-réseau : 192.168.0.0/16

Lorsque vous créez un sous-réseau dans un VCN, par défaut, le sous-réseau est considéré comme public et les communications Internet sont autorisées. Utilisez des sous-réseaux privés pour héberger des ressources qui ne nécessitent pas d'accès Internet. Vous pouvez également configurer une passerelle de service dans votre VCN pour permettre aux ressources d'un sous-réseau privé d'accéder à d'autres services en nuage. Voir Choix de connectivité.

Vous pouvez utiliser le routage ZPR (Zero Trust Packet Routing) avec ou à la place des groupes de sécurité de réseau pour gérer l'accès réseau aux ressources OCI. Pour ce faire, définissez des politiques ZPR qui régissent la façon dont les ressources communiquent entre elles, puis ajoutez des attributs de sécurité à ces ressources. Pour plus d'informations, voir Routage de paquets Zéro confiance.

Attention

Si un point d'extrémité a un attribut de sécurité ZPR (Zero Trust Packet Routing), le trafic vers le point d'extrémité doit satisfaire aux politiques ZPR ainsi qu'à toutes les règles de groupe de sécurité de réseau et de liste de sécurité. Par exemple, si vous utilisez déjà des groupes de sécurité de réseau et que vous ajoutez un attribut de sécurité à un point d'extrémité, tout le trafic vers ce point d'extrémité est bloqué. À partir de là, une politique ZPR doit autoriser explicitement le trafic vers le point d'extrémité.

Vérification

Localisez les journaux d'accès et les autres données de sécurité pour le gestionnaire de ressources.

Le service de vérification enregistre automatiquement tous les appels d'API aux ressources Oracle Cloud Infrastructure. Vous pouvez atteindre vos objectifs de sécurité et de conformité en utilisant le service de vérification pour surveiller toutes les activités des utilisateurs dans votre location. Comme tous les appels de console, de trousse SDK et de ligne de commande (interface de ligne de commande) sont effectués par l'intermédiaire de nos API, toute l'activité provenant de ces sources est incluse. Les enregistrements de vérification sont disponibles au moyen d'une API d'interrogation authentifiée et filtrable ou ils peuvent être extraits en tant que fichiers par lots à partir du stockage d'objets. Le contenu du journal de vérification inclut l'activité survenue, l'utilisateur qui l'a lancée, la date et l'heure de la demande, ainsi que l'adresse IP source, l'agent utilisateur et les en-têtes HTTP de la demande. Voir Affichage des événements du journal de vérification.

Exemple de journal de vérification

Journal de vérification pour un événement CreateJob

{
  "datetime": 1639092316856,
  "logContent": {
    "data": {
      "additionalDetails": {
        "X-Real-Port": 31720
      },
      "availabilityDomain": "AD1",
      "compartmentId": "ocid1.tenancy.oc1..<unique_id>",
      "compartmentName": "mytenancy",
      "definedTags": null,
      "eventGroupingId": "<unique_id>",
      "eventName": "CreateJob",
      "freeformTags": null,
      "identity": {
        "authType": "natv",
        "callerId": null,
        "callerName": null,
        "consoleSessionId": "<unique_id>",
        "credentials": "<key>",
        "ipAddress": "<ip_address>",
        "principalId": "ocid1.user.oc1..<unique_id>",
        "principalName": "<user_name>",
        "tenantId": "ocid1.tenancy.oc1..<unique_id>",
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"
      },
      "message": "apply-job-20211209152516 CreateJob succeeded",
      "request": {
        "action": "POST",
        "headers": {
          "Accept": [
            "*/*"
          ],
          "Accept-Encoding": [
            "gzip, deflate, br"
          ],
          "Accept-Language": [
            "en"
          ],
          "Authorization": [
            "Signature keyId=\"<key>",version=\"1\",algorithm=\"rsa-sha256\",headers=\"(request-target) host content-length accept-language content-type opc-request-id x-content-sha256 x-date\",signature=\"*****\""
          ],
          "Connection": [
            "keep-alive"
          ],
          "Content-Length": [
            "207"
          ],
          "Content-Type": [
            "application/json"
          ],
          "Origin": [
            "https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com"
          ],
          "Referer": [
            "https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com/"
          ],
          "Sec-Fetch-Dest": [
            "empty"
          ],
          "Sec-Fetch-Mode": [
            "cors"
          ],
          "Sec-Fetch-Site": [
            "same-site"
          ],
          "User-Agent": [
            "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"
          ],
          "opc-request-id": [
            "<unique_id>"
          ],
          "x-content-sha256": [
            "<key>"
          ],
          "x-date": [
            "Thu, 09 Dec 2021 23:25:16 GMT"
          ]
        },
        "id": "<unique_id>,
        "parameters": {},
        "path": "/20180917/jobs"
      },
      "resourceId": "ocid1.ormjob.oc1.phx.<unique_id>",
      "response": {
        "headers": {
          "Access-Control-Allow-Credentials": [
            "true"
          ],
          "Access-Control-Allow-Origin": [
            "https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com"
          ],
          "Access-Control-Expose-Headers": [
            "opc-previous-page,opc-next-page,opc-client-info,ETag,opc-total-items,opc-request-id,Location"
          ],
          "Cache-Control": [
            "no-cache, no-store, must-revalidate"
          ],
          "Content-Length": [
            "1135"
          ],
          "Content-Type": [
            "application/json"
          ],
          "Date": [
            "Thu, 09 Dec 2021 23:25:16 GMT"
          ],
          "ETag": [
            "<unique_id>"
          ],
          "Pragma": [
            "no-cache"
          ],
          "Strict-Transport-Security": [
            "max-age=31536000; includeSubDomains;"
          ],
          "Timing-Allow-Origin": [
            "https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com"
          ],
          "Vary": [
            "Origin"
          ],
          "X-Content-Type-Options": [
            "nosniff"
          ],
          "X-XSS-Protection": [
            "1; mode=block"
          ],
          "opc-request-id": [
            "<unique_id>"
          ]
        },
        "message": null,
        "payload": {
          "id": "ocid1.ormjob.oc1.phx.<unique_id>",
          "resourceName": "apply-job-<unique_id>"
        },
        "responseTime": "2021-12-09T23:25:16.856Z",
        "status": "200"
      },
      "stateChange": {
        "current": {
          "applyJobPlanResolution": {
            "isAutoApproved": true
          },
          "cancellationDetails": {
            "isForced": false
          },
          "compartmentId": "ocid1.tenancy.oc1..<unique_id>",
          "configSource": {
            "configSourceRecordType": "ZIP_UPLOAD"
          },
          "definedTags": {},
          "displayName": "apply-job-<unique_id>",
          "freeformTags": {},
          "id": "ocid1.ormjob.oc1.phx.<unique_id>",
          "jobOperationDetails": {
            "executionPlanStrategy": "AUTO_APPROVED",
            "operation": "APPLY"
          },
          "lifecycleState": "ACCEPTED",
          "operation": "APPLY",
          "stackId": "ocid1.ormstack.oc1.phx.<unique_id>",
          "timeCreated": "2021-12-09T23:25:16.707Z",
          "variables": {
            "compartment_ocid": "ocid1.tenancy.oc1..<unique_id>",
            "region": "us-phoenix-1",
            "tenancy_ocid": "ocid1.tenancy.oc1..<unique_id>",
            "wp_admin_password": "<example-password>",
            "wp_admin_user": "<user_name>"
          }
        },
        "previous": {}
      }
    },
    "dataschema": "2.0",
    "id": "<unique_id>",
    "oracle": {
      "compartmentid": "ocid1.tenancy.oc1..<unique_id>",
      "ingestedtime": "2021-12-09T23:25:19.071Z",
      "loggroupid": "_Audit",
      "tenantid": "ocid1.tenancy.oc1..<unique_id>"
    },
    "source": "apply-job-<unique_id>",
    "specversion": "1.0",
    "time": "2021-12-09T23:25:16.856Z",
    "type": "com.oraclecloud.OracleResourceManager.CreateJob.begin"
  }
}