Sécurité de Resource Manager

Cette rubrique fournit des informations de sécurité et des recommandations pour Resource Manager.

Resource Manager permet d'automatiser le provisionnement des ressources Oracle Cloud Infrastructure en validant les instructions dans les fichiers de configuration. Vous vous assurez ainsi que les ressources provisionnées respectent les directives de sécurité de votre organisation. Ces fichiers de configuration capturent les instructions de provisionnement détaillées à l'aide d'un langage déclaratif qui suit le modèle "infrastructure-as-code". Les instructions de provisionnement sont exécutées en tant que travaux.

Responsabilités de sécurité

Pour utiliser Resource Manager en toute sécurité, vous découvrirez 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 cloud, telles que les contrôles d'accès des opérateurs cloud et l'application de patches de sécurité à l'infrastructure. Vous êtes responsable de la configuration sécurisée de vos ressources cloud. La sécurité dans le cloud est une responsabilité partagée entre vous et Oracle.

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

  • Sécurité physique : Oracle est responsable de la protection de l'infrastructure globale qui exécute tous les services offerts par Oracle Cloud Infrastructure. Cette infrastructure comporte le matériel, le logiciel, les réseaux et les installations qui exécutent les services Oracle Cloud Infrastructure.

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

  • Contrôle d'accès : limitez les privilèges autant que possible. Les utilisateurs doivent disposer uniquement des droits d'accès nécessaires pour faire leur travail.
  • Confidentialité : limitez l'utilisation des données sensibles dans les fichiers de configuration et de sortie

Tâches de sécurité initiales

Utilisez cette liste de contrôle pour identifier les tâches à effectuer pour sécuriser Resource Manager dans une nouvelle location Oracle Cloud Infrastructure.

Tâche Plus d'informations
Utiliser des stratégies IAM pour accorder l'accès aux utilisateurs et aux ressources Stratégies IAM

Tâches de sécurité de routine

Après avoir commencé avec Resource Manager, utilisez cette liste de contrôle pour identifier les tâches de sécurité que nous vous recommandons d'effectuer régulièrement.

Tâche Plus d'informations
Limiter l'utilisation des informations sensibles dans les fichiers de configuration et de sortie confidentialité
Effectuer un audit de sécurité Audit

Stratégies IAM

Utilisez des stratégies pour limiter l'accès à Resource Manager.

Important

Des stratégies de gestion des ressources Oracle Cloud Infrastructure sont également requises pour les opérations Resource Manager qui accèdent aux ressources. Par exemple, l'exécution d'un travail d'application sur une pile qui inclut des sous-réseaux et des instances Compute nécessite des stratégies qui vous accordent des droits d'accès pour ces types de ressource dans les compartiments dans lesquels vous souhaitez provisionner les ressources. Pour consulter des exemples de stratégie de gestion des ressources Oracle Cloud Infrastructure, reportez-vous à Stratégies courantes.

Une stratégie indique qui peut accéder aux ressources Oracle Cloud Infrastructure et comment. Pour plus d'informations, reportez-vous à Fonctionnement des stratégies.

Affectez à un groupe les privilèges les moins élevés nécessaires à l'exécution de ses responsabilités. Chaque stratégie comporte un verbe qui décrit les actions que le groupe est autorisé à effectuer. Du minimum d'accès au maximum, les verbes disponibles sont : inspect, read, use et manage.

Pour plus d'informations sur les stratégies Resource Manager, reportez-vous à Détails relatifs à Resource Manager.

Gestion des piles et des travaux

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

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

Créez cette stratégie pour empêcher explicitement un groupe d'exécuter des travaux de destruction.

Remarque

Dans cette instruction de stratégie, vous devez inclure le nouveau droit d'accès à read orm-jobs car la troisième instruction inclut une condition qui utilise des variables qui ne sont pas pertinentes pour répertorier ou obtenir des travaux.
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 d'informations sur les autorisations de pile, reportez-vous à orm-stacks. Pour plus d'informations sur les autorisations de travail, reportez-vous à orm-jobs.

Gérer les fournisseurs de source de configuration

Créez cette stratégie pour accorder à un groupe le droit de créer, de mettre à jour, de déplacer et de 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 stratégie pour autoriser un groupe à créer des piles à partir de fichiers de configuration situés dans les systèmes de contrôle de code source (à l'aide des fournisseurs source de configuration existants), en plus de gérer les piles et les travaux.

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 d'informations sur les autorisations du fournisseur de source de configuration, reportez-vous à la section orm-config-source-providers.

Gérer les modèles privés

Créez cette stratégie pour accorder à un groupe des droits d'accès permettant de créer, de mettre à jour, de déplacer et de supprimer des modèles privés dans la location.

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

Créez cette stratégie pour autoriser un groupe à créer des piles à partir de modèles privés, en plus de gérer des piles et des travaux.

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 d'informations sur les autorisations de modèle privé, reportez-vous à orm-template.

Gérer les adresses privées

Créez cette stratégie pour accorder à un groupe des droits d'accès permettant de créer, de mettre à jour, de déplacer et de supprimer des adresses privées dans la location, y compris la possibilité de sélectionner des réseaux cloud virtuels et des sous-réseaux lors de la création d'adresses privées.

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

Pour plus d'informations sur les droits d'accès d'adresse privée, reportez-vous à orm-private-endpoints.

confidentialité

Gérez et contrôlez l'accès aux informations sensibles dans Resource Manager.

Fichiers d'état Terraform

L'état Terraform (.tfstate) peut contenir des données sensibles, notamment des ID de ressource, des mots de passe et des clés SSH. Utilisez le service Vault pour gérer et effectuer la rotation des informations d'identification de clé secrète que vous utilisez avec Resource Manager.

Un coffre inclut les clés de cryptage et les clés secrètes que vous utilisez pour protéger vos données et vous connecter aux ressources sécurisées. Les clés secrètes sont cryptées à l'aide des clés de cryptage maître et stockent des informations d'identification telles que des mots de passe, des certificats, des clés SSH ou des jetons d'authentification. Avant de créer et d'utiliser des clés secrètes, vous devez créer un coffre et une clé de cryptage maître s'ils 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. Reportez-vous à la section Using Remote Exec.

Une version de clé secrète est automatiquement affectée à chaque clé secrète. Lors de la rotation d'une clé secrète, vous générez une nouvelle version en fournissant un nouveau contenu au service Vault. La rotation régulière du contenu de clé secrète permet de réduire l'impact si une clé secrète est exposée.

Pour contrôler l'accès au fichier d'état Terraform, vous pouvez créer une stratégie de sécurité qui limite l'accès aux travaux de lecture, par exemple :

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

Tout utilisateur disposant du droit d'accès ORM_JOB_READ peut accéder aux fichiers d'état Terraform.

Remarque

Comme le droit d'accès read orm-jobs a également une incidence sur d'autres opérations, comme l'obtention de journaux et de configurations Terraform, nous recommandons de séparer les fichiers d'état dans un compartiment sur lequel une stratégie restrictive ne limite pas la capacité à effectuer d'autres opérations.

Configurations Terraform

Le workflow Resource Manager inclut généralement l'écriture ou la génération d'une configuration Terraform qui est ensuite utilisée pour gérer la pile. La configuration Terraform étant accessible via l'API Resource Manager GetJobTfConfig, nous vous recommandons de ne pas inclure d'informations sensibles dans vos fichiers de configuration.

Tout utilisateur disposant du droit d'accès ORM_JOB_READ peut accéder aux configurations Terraform.

Sécurité réseau

Sécurisez l'accès réseau à vos ressources dans le service Resource Manager, y compris les serveurs Git privés et les ressources cloud auxquels vous accédez à partir de Resource Manager.

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

Utilisez des listes de sécurité , des groupes de sécurité réseau ou une combinaison des deux pour contrôler le trafic entrant et sortant au niveau du paquet des ressources dans votre VCN (réseau cloud virtuel) . Reportez-vous à Accès et sécurité.

Lorsque vous configurez un groupe de sécurité réseau à utiliser avec une adresse privée, incluez les règles suivantes.

  • Règle sortante 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 CIDR de sous-réseau et VCN : 192.168.0.0/16
  • Règle entrante autorisant le trafic à partir de l'adresse privée.

    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 CIDR de sous-réseau : 192.168.0.0/16

Lorsque vous créez un sous-réseau dans un VCN, le sous-réseau est considéré par défaut comme public et la communication Internet est autorisée. Utilisez des sous-réseaux privés pour héberger les ressources qui ne nécessitent pas d'accès à Internet. Vous pouvez également configurer une passerelle de service dans votre VCN afin d'autoriser les ressources d'un sous-réseau privé à accéder à d'autres services cloud. Reportez-vous à Options de connectivité.

Audit

Recherchez les journaux d'accès et d'autres données de sécurité pour Resource Manager.

Le service Audit enregistre automatiquement tous les appels d'API vers les ressources Oracle Cloud Infrastructure. Vous pouvez atteindre vos objectifs de sécurité et de conformité à l'aide du service Audit afin de surveiller toutes les activités utilisateur de votre location. Comme tous les appels de la console, du kit SDK et de l'interface de ligne de commande passent par nos API, toutes les activités de ces sources sont incluses. Les enregistrements d'audit sont disponibles via une API de requête filtrable authentifiée ou peuvent être extraits en tant que fichiers en batch à partir d'Object Storage. Le contenu du journal d'audit 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. Reportez-vous à Visualisation des événements de journal d'audit.

Exemple de journal d'audit

Un journal d'audit 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"
  }
}