Guide sur l'API pour les politiques de pilotage pour la gestion du trafic
Utilisez l'API REST d'Oracle Cloud Infrastructure DNS pour créer et configurer des politiques de gestion du trafic.
Utilisez le guide suivant pour apprendre comment créer des politiques à l'aide de l'API REST DNS.
Authentification et autorisation
Chaque service d'Oracle Cloud Infrastructure est intégré avec le service de gestion des identités et des accès GIA aux fins d'authentification et d'autorisation, pour toutes les interfaces (console, trousse SDK ou interface de ligne de commande et API REST).
Un administrateur d'une organisation doit configurer les groupes , les compartiments et les politiques qui déterminent les utilisateurs pouvant accéder aux services et aux ressources, ainsi que le type d'accès. Par exemple, les politiques contrôlent qui peut créer des utilisateurs, créer et gérer le réseau en nuage, créer des instances, créer des seaux, télécharger des objets, etc. Pour plus d'informations, voir Gestion des domaines d'identité. Pour des détails précis sur l'écriture de politiques pour les différents services, voir Informations de référence sur les politiques.
Si vous êtes un utilisateur ordinaire (pas un administrateur) qui doit utiliser les ressources Oracle Cloud Infrastructure de la société, demandez à un administrateur de configurer un ID utilisateur pour vous. L'administrateur vous indiquera les compartiments que vous pouvez utiliser.
Composants d'une politique de pilotage pour la gestion du trafic
La liste suivante présente les composants utilisés pour créer une politique de pilotage pour la gestion du trafic.
- POLITIQUES DE PILOTAGE
- Cadre global qui définit le comportement de gestion du trafic pour les zones. Les politiques de pilotage contiennent des règles qui servent à traiter intelligemment des réponses DNS.
- ATTACHEMENTS
- Permet de lier une politique de pilotage à des zones. L'attachement d'une politique de pilotage à une zone occlut tous les enregistrements de son domaine qui sont d'un type d'enregistrement couvert. Ils construisent des réponses DNS à partir de la politique de pilotage et non à partir des enregistrements du domaine. Un domaine peut avoir au moins un attachement qui couvre un type d'enregistrement particulier.
- RÈGLES
- Directives utilisées par les politiques de pilotage pour filtrer les réponses en fonction des propriétés d'une demande DNS, telles que la géolocalisation des demandes ou l'état des points d'extrémité.
- RÉPONSES
- Contiennent les données et les métadonnées d'enregistrement DNS à traiter dans une politique de pilotage.
- MODÈLES
- Les modèles sont des séquences prédéfinies de règles qui créent un type de politique et son comportement prévu. Exemple : Le modèle
FAILOVER
sert des réponses en vérifiant d'abord l'interrogation DNS sur une règleFILTER
, puis les règles suivantes successivement :HEALTH
,PRIORITY
etLIMIT
. Cela fournit au domaine une capacité de basculement dynamique. Les politiques qui définissent le champtemplate
avec toute politique autre queCUSTOM
doivent respecter la séquence de règle décrite pour ce type de politique, sinon une erreur de code de statut400
est retournée lors de la création de la politique. - CAS
- Facultativement, une règle peut inclure une séquence de cas définissant des configurations de remplacement de son comportement lors du traitement d'une interrogation DNS particulière. Lorsqu'une règle n'a pas de séquence de cas, elle est toujours évaluée avec la même configuration lors du traitement. Lorsqu'une règle comporte une séquence de cas vide, elle est toujours ignorée lors du traitement. Lorsqu'une règle comporte une séquence non vide, son comportement lors du traitement est configuré par le premier cas correspondant dans la séquence. Un cas de règle sans attribut
caseCondition
correspond toujours. Un cas de règle avec un attributcaseCondition
correspond uniquement lorsque cette expression est évaluée à Vrai pour l'interrogation spécifique.
Créer des politiques de pilotage à l'aide de modèles
La section suivante explique la configuration de règle pour chaque type de modèle de politique de pilotage, suivie d'un exemple de demande POST ( CreateSteeringPolicy ) montrant comment configurer chaque modèle.
BASCULEMENT
Politiques de basculement d'utilisateur pour prioriser l'ordre dans lequel les réponses sont traitées dans une politique (par exemple, Principale et Secondaire). Les moniteurs et les sondes sur demande d'Oracle Cloud Infrastructure Health Checks sont utilisés pour évaluer l'état des réponses dans la politique. Si la réponse principale s'avère non saine, le trafic DNS est automatiquement associé à la réponse secondaire. Chacune des règles suivantes doit être définie dans l'ordre spécifié dans le champ rules
du corps de la demande lorsque vous utilisez un modèle FAILOVER
:
Ordre | Règle | Restrictions | Commentaires |
---|---|---|---|
1
|
FILTER
|
|
|
2
|
HEALTH
|
|
Inclus uniquement si healthCheckMonitorId est défini pour la politique. |
3
|
PRIORITÉ
|
|
|
4
|
LIMITE
|
|
Exemple de politique POST /steeringPolicies
utilisant le modèle FAILOVER
:
{
"compartmentId": "ocid1...",
"displayName": "failover between endpoints",
"ttl": 30,
"healthCheckMonitorId": "ocid1...",
"template": "FAILOVER",
"answers": [
{
"name": "server-primary",
"rtype": "A",
"rdata": "192.168.0.2",
"pool": "primary"
},
{
"name": "server-secondary",
"rtype": "A",
"rdata": "192.168.0.3",
"pool": "secondary"
}
],
"rules": [
{
"ruleType": "FILTER",
"defaultAnswerData": [
{
"answerCondition": "answer.isDisabled != true",
"shouldKeep": true
}
]
},
{
"ruleType": "HEALTH"
},
{
"ruleType": "PRIORITY",
"defaultAnswerData": [
{
"answerCondition": "answer.pool == 'primary'",
"value": 1
},
{
"answerCondition": "answer.pool == 'secondary'",
"value": 99
}
]
},
{
"ruleType": "LIMIT",
"defaultCount": 1
}
]
}
LOAD_BALANCE
Les politiques d'équilibreur de charge répartissent le trafic entre de nombreux points d'extrémité. Vous pouvez affecter des pondérations égales aux points d'extrémité afin de répartir le trafic uniformément entre les points d'extrémité, ou vous pouvez affecter des pondérations personnalisées pour l'équilibrage de charge des ratios. Les moniteurs et les sondes sur demande d'Oracle Cloud Infrastructure Health Checks sont utilisées pour évaluer l'état du point d'extrémité. Si un point d'extrémité s'avère non sain, le trafic DNS est automatiquement réparti entre les autres points d'extrémité. Chacune des règles suivantes doit être définie dans l'ordre spécifié dans le champ rules
du corps de la demande lorsque vous utilisez un modèle LOAD_BALANCE
:
Ordre | Règle | Restrictions | Commentaires |
---|---|---|---|
1
|
FILTER
|
|
|
2
|
HEALTH
|
|
Inclus uniquement si healthCheckMonitorId est défini pour la politique. |
3
|
PONDÉRÉ
|
|
|
4
|
LIMITE
|
|
Exemple de stratégie POST /SteeingPolicies
utilisant le modèle LOAD_BALANCE
:
{
"compartmentId": "ocid1...",
"displayName": "Weighted load balance for a set of answers with health checks",
"ttl": 30,
"healthCheckMonitorId": "ocid1...",
"template": "LOAD_BALANCE",
"answers": [
{
"name": "server1",
"rtype": "A",
"rdata": "192.168.0.2"
},
{
"name": "server2",
"rtype": "A",
"rdata": "192.168.0.3"
}
],
"rules": [
{
"ruleType": "FILTER",
"defaultAnswerData": [
{
"answerCondition": "answer.isDisabled != true",
"shouldKeep": true
}
]
},
{
"ruleType": "HEALTH"
},
{
"ruleType": "WEIGHTED",
"defaultAnswerData": [
{
"answerCondition": "answer.name == 'server1'",
"value": 99
},
{
"answerCondition": "answer.name == 'server2'",
"value": 1
}
]
},
{
"ruleType": "LIMIT",
"defaultCount": 1
}
]
}
ROUTE_BY_GEO
Les politiques de pilotage basé sur la géolocalisation transmettent le trafic DNS vers différents points d'extrémité en fonction de l'emplacement de l'utilisateur final. Les clients peuvent définir des régions géographiques constituées du continent d'origine, des pays ou des États/provinces (Amérique du Nord) et définir un point d'extrémité ou un jeu de points d'extrémité distinct pour chaque région. Chaque règle suivante doit être définie dans l'ordre spécifié dans le champ rules
du corps de demande lorsque vous utilisez un modèle ROUTE_BY_GEO
:
Ordre | Règle | Restrictions | Commentaires |
---|---|---|---|
1
|
FILTER
|
|
|
2
|
HEALTH
|
|
Inclus uniquement si healthCheckMonitorId est défini pour la politique. |
3
|
PRIORITÉ
|
|
|
4
|
LIMITE
|
|
Exemple de corps de demande POST /steeringPolicies
créé à l'aide du modèle ROUTE_BY_GEO
:
{
"compartmentId": "ocid1...",
"displayName": "Geolocations mapped to answer pools",
"ttl": 30,
"healthCheckMonitorId": "ocid1...",
"template": "ROUTE_BY_GEO",
"answers": [
{
"name": "US Server 1",
"rtype": "A",
"rdata": "192.168.0.2",
"pool": "US"
},
{
"name": "US Server 2",
"rtype": "A",
"rdata": "192.168.0.3",
"pool": "US"
},
{
"name": "EU Server 1",
"rtype": "A",
"rdata": "192.168.0.4",
"pool": "EU"
},
{
"name": "EU Server 2",
"rtype": "A",
"rdata": "192.168.0.5",
"pool": "EU"
},
{
"name": "rest of world 1",
"rtype": "A",
"rdata": "203.0.113.2",
"pool": "Global"
},
{
"name": "rest of world 2",
"rtype": "A",
"rdata": "203.0.113.3",
"pool": "Global"
}
],
"rules": [
{
"ruleType": "FILTER",
"defaultAnswerData": [
{
"answerCondition": "answer.isDisabled != true",
"shouldKeep": true
}
]
},
{
"ruleType": "HEALTH"
},
{
"ruleType": "PRIORITY",
"cases": [
{
"caseCondition": "query.client.geoKey in (geoKey '6255149')",
"answerData": [
{
"answerCondition": "answer.pool == 'US'",
"value": 1
},
{
"answerCondition": "answer.pool == 'EU'",
"value": 2
},
{
"answerCondition": "answer.pool == 'Global'",
"value": 3
}
]
},
{
"caseCondition": "query.client.geokey in (geokey '6255148')",
"answerData": [
{
"answerCondition": "answer.pool == 'EU'",
"value": 1
},
{
"answerCondition": "answer.pool == 'US'",
"value": 2
},
{
"answerCondition": "answer.pool == 'Global'",
"value": 3
}
]
},
{
"answerData": [
{
"answerCondition": "answer.pool == 'Global'",
"value": 1
},
{
"answerCondition": "answer.pool == 'US'",
"value": 2
},
{
"answerCondition": "answer.pool == 'EU'",
"value": 3
}
]
}
]
},
{
"ruleType": "LIMIT",
"defaultCount": 1
}
]
}
ROUTE_BY_ASN
Les politiques de pilotage basées sur l'ASN permettent de piloter le trafic DNS en fonction des numéros de système autonome. Les interrogations DNS provenant d'un ASN ou d'un jeu d'ASN particulier peuvent être dirigées vers un point d'extrémité spécifique. Chaque règle suivante doit être définie dans l'ordre spécifié dans le champ rules
du corps de demande lorsque vous utilisez un modèle ROUTE_BY_ASN
:
Ordre | Règle | Restrictions | Commentaires |
---|---|---|---|
1
|
FILTER
|
|
|
2
|
HEALTH
|
|
Inclus uniquement si healthCheckMonitorId est défini pour la politique. |
3
|
PRIORITÉ
|
|
|
4
|
LIMITE
|
|
Exemple de corps de demande POST /steeringPolicies
créé à l'aide du modèle ROUTE_BY_ASN
:
{
"compartmentId": "ocid1...",
"displayName": "ASNs mapped to pools",
"ttl": 30,
"template": "ROUTE_BY_ASN",
"answers": [
{
"name": "ABC Server",
"rtype": "A",
"rdata": "192.168.0.2",
"pool": "ABC"
},
{
"name": "DEF Server",
"rtype": "A",
"rdata": "192.168.0.3",
"pool": "DEF"
},
{
"name": "Other",
"rtype": "A",
"rdata": "203.0.113.2",
"pool": "Other"
}
],
"rules": [
{
"ruleType": "FILTER",
"defaultAnswerData": [
{
"answerCondition": "answer.isDisabled != true",
"shouldKeep": true
}
]
},
{
"ruleType": "PRIORITY",
"cases": [
{
"caseCondition": "query.client.asn == 3",
"answerData": [
{
"answerCondition": "answer.pool == 'ABC'",
"value": 1
},
{
"answerCondition": "answer.pool == 'DEF'",
"value": 2
},
{
"answerCondition": "answer.pool == 'Other'",
"value": 3
}
]
},
{
"caseCondition": "query.client.asn == 16591",
"answerData": [
{
"answerCondition": "answer.pool == 'DEF'",
"value": 1
},
{
"answerCondition": "answer.pool == 'ABC'",
"value": 2
},
{
"answerCondition": "answer.pool == 'Other'",
"value": 3
}
]
},
{
"answerData": [
{
"answerCondition": "answer.pool == 'Other'",
"value": 1
},
{
"answerCondition": "answer.pool == 'ABC'",
"value": 2
},
{
"answerCondition": "answer.pool == 'DEF'",
"value": 3
}
]
}
]
},
{
"ruleType": "LIMIT",
"defaultCount": 1
}
]
}
ROUTE_BY_IP
Les politiques de pilotage basées sur le préfixe IP permettent aux clients de piloter le trafic DNS en fonction du préfixe IP de l'interrogation d'origine. Chaque règle suivante doit être définie dans l'ordre spécifié dans le champ rules
du corps de demande lorsque vous utilisez un modèle ROUTE_BY_IP
:
Ordre | Règle | Restrictions | Commentaires |
---|---|---|---|
1
|
FILTER
|
|
|
2
|
HEALTH
|
|
Inclus uniquement si healthCheckMonitorId est défini pour la politique. |
3
|
PRIORITÉ
|
|
|
4
|
LIMITE
|
|
Exemple de corps de demande POST /steeringPolicies
créé à l'aide du modèle ROUTE_BY_IP
:
{
"compartmentId": "ocid1...",
"displayName": "IP subnets mapped to answer pools",
"ttl": 30,
"template": "ROUTE_BY_IP",
"answers": [
{
"name": "ABC Server",
"rtype": "A",
"rdata": "192.168.0.2",
"pool": "ABC"
},
{
"name": "DEF Server",
"rtype": "A",
"rdata": "192.168.0.3",
"pool": "DEF"
},
{
"name": "Other",
"rtype": "A",
"rdata": "203.0.113.2",
"pool": "Other"
}
],
"rules": [
{
"ruleType": "FILTER",
"defaultAnswerData": [
{
"answerCondition": "answer.isDisabled != true",
"shouldKeep": true
}
]
},
{
"ruleType": "PRIORITY",
"cases": [
{
"caseCondition": "query.client.address in (subnet '10.0.3.0/24')",
"answerData": [
{
"answerCondition": "answer.pool == 'ABC'",
"value": 1
},
{
"answerCondition": "answer.pool == 'DEF'",
"value": 2
},
{
"answerCondition": "answer.pool == 'Other'",
"value": 3
}
]
},
{
"caseCondition": "query.client.address in (subnet '192.0.2.2/24')",
"answerData": [
{
"answerCondition": "answer.pool == 'DEF'",
"value": 1
},
{
"answerCondition": "answer.pool == 'ABC'",
"value": 2
},
{
"answerCondition": "answer.pool == 'Other'",
"value": 3
}
]
},
{
"answerData": [
{
"answerCondition": "answer.pool == 'Other'",
"value": 1
},
{
"answerCondition": "answer.pool == 'ABC'",
"value": 2
},
{
"answerCondition": "answer.pool == 'DEF'",
"value": 3
}
]
}
]
},
{
"ruleType": "LIMIT",
"defaultCount": 1
}
]
}
PERSONNALISÉE
Utilisez des politiques personnalisées pour créer des politiques complexes combinant les capacités du basculement, de l'équilibrage de charge, de la géolocalisation et du préavis d'expédition et du pilotage par préfixe IP. Les modèles personnalisés ne requièrent pas de séquence restreinte de règles. Nous vous recommandons de communiquer avec le soutien technique d'Oracle Cloud Infrastructure avant de créer une politique personnalisée.
Types de règle
- FILTRE
- Utilise des données booléennes associées aux réponses et conserve les réponses uniquement si la valeur
shouldKeep
de la règle esttrue
(Vrai). - ÉTAT
- Utilise des moniteurs de vérification d'état OCI et des sondes sur demande pour évaluer l'état des points d'extrémité et ajouter et supprimer des réponses à la politique, au besoin. Un moniteur de vérification d'état doit être référencé dans une règle d'état pour affecter la politique. Pour plus d'informations sur les vérifications d'état, voir Vérifications d'état.
- PONDÉRÉ
- Utilise un nombre entre 0 et 255 pour évaluer la fréquence à laquelle une réponse est utilisée par rapport à d'autres réponses. Les réponses avec des valeurs élevées sont plus susceptibles d'être retournées.
- PRIORITÉ
- Utilise un nombre entier associé à chaque réponse pour trier les réponses de la valeur la plus basse à la plus élevée. Exemple : Une réponse avec une valeur de priorité 1 sera retournée avant une réponse d'une valeur de priorité 10 dans la liste des réponses. Les réponses qui n'ont pas de valeur de priorité leur sont déplacées à la fin de la liste de réponses.
- LIMITE
- Utilise une propriété de comptage pour filtrer toutes les réponses, sauf la première dans la liste.