Sécurisation de Resource Manager
Cette rubrique fournit des informations et des recommandations de sécurité pour Resource Manager.
Resource Manager permet d'automatiser le provisionnement des ressources Oracle Cloud Infrastructure en validant les instructions dans les fichiers de configuration. Ainsi, vous veillez à ce que les ressources provisionnées respectent les consignes 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 en matière de sécurité
Pour utiliser Resource Manager en toute sécurité, découvrez vos responsabilités en matière de sécurité et de conformité.
Oracle est responsable des exigences de sécurité suivantes :
- Sécurité physique : Oracle est en charge de la protection de l'infrastructure globale qui exécute tous les services offerts par Oracle Cloud Infrastructure. Cette infrastructure comprend le matériel, les logiciels, les fonctions de réseau 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 et englobent les domaines suivants :
- Contrôle d'accès : limitez au maximum les privilèges. Les utilisateurs doivent disposer uniquement des droits d'accès nécessaires pour faire leur travail.
- Confidentialité : limite l'utilisation de données confidentielles dans les fichiers de configuration et de sortie.
Tâches initiales liées à la sécurité
Utilisez cette liste de contrôle afin d'identifier les tâches que vous effectuez pour sécuriser Resource Manager dans une nouvelle location Oracle Cloud Infrastructure.
| Tâche | Informations supplémentaires |
|---|---|
| Employer des stratégies IAM pour accorder l'accès aux utilisateurs et aux ressources | Stratégies IAM |
Tâches de routine liées à la sécurité
Après vous être familiarisé 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 | Informations supplémentaires |
|---|---|
| Limiter l'utilisation d'informations sensibles dans les fichiers de configuration et de sortie | Confidentialité |
| Réalisation d'un audit de sécurité | Audit en cours |
Stratégies IAM
Utilisez des stratégies pour limiter l'accès à Resource Manager.
Des stratégies de gestion du matériel Oracle Cloud Infrastructure sont également requises pour des 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 instances Compute et les sous-réseaux exige des stratégies qui vous accordent des droits d'utilisation pour ces types, dans les compartiments où vous souhaitez provisionner les ressources. Pour consulter des exemples de stratégies de gestion de ressources Oracle Cloud Infrastructure, reportez-vous à Modèles de règle de générateur de stratégies.
Une stratégie précise 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 minimaux qui sont requis pour assumer ses responsabilités. Chaque stratégie comporte un verbe décrivant les actions que le groupe est autorisé à effectuer. Les verbes disponibles sont les suivants, de l'accès le plus restreint à l'accès le plus étendu : 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 des piles et des 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 tenancyCréez cette stratégie pour empêcher explicitement un groupe d'exécuter des travaux de destruction.
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 de détails sur les autorisations de pile, reportez-vous à orm-stacks. Pour plus de détails sur les droits d'accès aux travaux, 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 tenancyCréez cette stratégie pour accorder à un groupe l'autorisation de créer des piles à partir de fichiers de configuration dans les systèmes de contrôle de code source (à l'aide de fournisseurs de source de configuration existants), en plus de la gestion des piles et des 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 tenancyPour plus d'informations sur les autorisations du fournisseur 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 le droit 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 tenancyCréez cette stratégie pour accorder à un groupe le droit de créer des piles à partir de modèles privés, en plus de la gestion 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 tenancyPour plus de détails sur les autorisations de modèle privé, reportez-vous à orm-templates.
Gestion des adresses privées
Créez cette stratégie pour accorder à un groupe le droit 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
where any request.operation={'CreatePrivateEndpoint'}"
Allow group <group_name> to use virtual-network-family in tenancyPour plus de détails sur les droits d'accès d'adresse privée, reportez-vous à orm-private-endpoints.
Confidentialité
Gérer et contrôler l'accès aux informations sensibles dans Resource Manager.
Fichiers d'état Terraform
L'état Terraform (.tfstate) peut contenir des données confidentielles, notamment des ID de ressource, des mots de passe et des clés SSH. Utilisez le service Vault pour gérer et faire pivoter les 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 à des ressources sécurisées. Les clés secrètes sont cryptées à l'aide de 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. Lorsque vous effectuez une 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 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 compartmentTout utilisateur disposant du droit d'accès ORM_JOB_READ peut accéder aux fichiers d'états Terraform.
Comme le droit d'accès
read orm-jobs affecte également d'autres opérations, telles que l'obtention de journaux et de configurations Terraform, nous vous recommandons de isoler 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 consiste généralement à écrire ou à générer 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 les listes de sécurité , les groupes de sécurité réseau ou une combinaison des deux pour contrôler le trafic de niveau paquet entrant et sortant des ressources de 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 VCN et de sous-réseau :
192.168.0.0/16
- Accès minimal :
-
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
- Accès minimal :
Lorsque vous créez un sous-réseau dans un VCN, par défaut, le sous-réseau est considéré comme public et la communication Internet est autorisée. 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 afin d'autoriser les ressources sur un sous-réseau privé à accéder à d'autres services cloud. Reportez-vous à Choix de connectivité.
Vous pouvez utiliser Zero Trust Packet Routing (ZPR) avec ou à la place des groupes de sécurité réseau pour gérer l'accès réseau aux ressources OCI. Pour ce faire, définissez des stratégies ZPR qui régissent la façon dont les ressources communiquent les unes avec les autres, puis ajoutez des attributs de sécurité à ces ressources. Pour plus d'informations, reportez-vous à la section Zero Trust Packet Routing.
Si une adresse possède un attribut de sécurité Zero Trust Packet Routing (ZPR), le trafic vers l'adresse doit satisfaire aux stratégies ZPR, ainsi qu'à toutes les règles de groupe de sécurité réseau et de liste de sécurité. Par exemple, si vous utilisez déjà des groupes de sécurité réseau et que vous ajoutez un attribut de sécurité à une adresse, tout le trafic vers cette adresse est bloqué. Ensuite, une stratégie ZPR doit autoriser explicitement le trafic vers l'adresse.
Audit en cours
Localisez 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é en utilisant le service Audit pour surveiller l'ensemble de l'activité utilisateur dans 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 ils 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.
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"
}
}