Guía de API de políticas de dirección de gestión de tráfico
Utilice la API de REST de Oracle Cloud Infrastructure DNS para crear y configurar políticas de gestión de tráfico.
Utilice la siguiente guía para obtener más información sobre cómo se crean las políticas con la API de REST de DNS.
Autenticación y autorización
Cada servicio de Oracle Cloud Infrastructure se integra con IAM con fines de autenticación y autorización para todas las interfaces (la consola, el SDK o la CLI, y la API de REST).
Un administrador de una organización tiene que configurar grupos, compartimentos y políticas que controlen qué usuarios pueden acceder a qué servicios, recursos y el tipo de acceso. Por ejemplo, las políticas controlan quién puede crear usuarios nuevos, crear y gestionar la red en la nube, crear instancias, crear cubos, descargar objetos, etc. Para obtener más información, consulte Gestión de dominios de identidad. Para obtener detalles específicos sobre la escritura de políticas de los distintos servicios, consulte Referencia de políticas.
Si es un usuario normal (no un administrador) que debe utilizar los recursos de Oracle Cloud Infrastructure que posee la compañía, póngase en contacto con un administrador para configurar su ID de usuario. El administrador puede confirmar qué compartimento o compartimentos puede utilizar.
Componentes de la política de dirección de gestión de tráfico
La siguiente lista describe los componentes utilizados para crear una política de dirección de gestión de tráfico.
- POLÍTICAS DE DIRECCIÓN
- Una estructura global para definir el comportamiento de gestión de tráfico para las zonas. Las políticas de dirección contienen reglas que ayudan a proporcionar respuestas de DNS de forma inteligente.
- ASOCIACIONES
- Permite enlazar una política de dirección a zonas. Una asociación de una política de dirección a una zona ocluye todos los registros de su dominio que son de un tipo de registro cubierto, construyendo respuestas de DNS a partir de su política de dirección en lugar de a partir de esos registros del dominio. Un dominio puede tener como máximo una asociación que cubra cualquier tipo de registro concreto.
- REGLAS
- Las políticas de dirección de directrices se utilizan para filtrar las respuestas según las propiedades de una solicitud de DNS, como la geolocalización de solicitudes o el estado de los puntos finales.
- RESPUESTAS
- Las respuestas contienen los datos de registro de DNS y los metadatos que se procesarán en una política de dirección.
- PLANTILLAS
- Las plantillas son secuencias de reglas predefinidas que crean un tipo de política y su comportamiento previsto. Ejemplo: la plantilla
FAILOVER
proporciona respuestas comprobando primero la consulta de DNS en una reglaFILTER
y, a continuación, las siguientes reglas sucesivamente:HEALTH
,PRIORITY
yLIMIT
. Esto proporciona la capacidad de failover dinámico de dominio. Las políticas que definen el campotemplate
con cualquier política que no seaCUSTOM
deben seguir la secuencia de reglas indicada para ese tipo de política; de lo contrario, se devuelve un error de código de estado400
al crear la política. - CASOS
- Una regla puede incluir opcionalmente una secuencia de casos que definen configuraciones alternativas para el comportamiento durante el procesamiento de una consulta de DNS concreta. Cuando una regla no tiene una secuencia de casos, siempre se evalúa con la misma configuración durante el procesamiento. Cuando una regla tiene una secuencia de casos vacía, siempre se ignora durante el procesamiento. Cuando una regla tiene una secuencia de casos que no está vacía, su comportamiento durante el procesamiento lo configura el primer caso de coincidencia en la secuencia. Un caso de regla sin
caseCondition
siempre coincide. Un caso de regla concaseCondition
solo coincide cuando dicha expresión se evalúa como verdadera para la consulta específica.
Creación de políticas de dirección con plantillas
En la siguiente sección se explica la configuración de reglas para cada tipo de plantilla de política de dirección seguida de una solicitud POST de ejemplo ( CreateSteeringPolicy ) que muestra cómo configurar cada plantilla.
FAILOVER
Políticas de failover del usuario para priorizar el orden en el que se proporcionan las respuestas en una política (por ejemplo, Principal y Secundario). Las supervisiones y los sondeos a demanda de Oracle Cloud Infrastructure Health Checks se aprovechan para evaluar el estado de las respuestas en la política. Si se detecta que la respuesta principal no está en perfectas condiciones, el tráfico de DNS se dirige automáticamente a la respuesta secundaria. Cada una de las siguientes reglas se debe definir en el orden especificado en el campo rules
del cuerpo de la solicitud al utilizar una plantilla FAILOVER
:
Orden | Regla | Restricciones | Comentarios |
---|---|---|---|
1
|
FILTRO
|
|
|
2
|
ESTADO
|
|
Solo se incluye si se define healthCheckMonitorId para la política. |
3
|
PRIORIDAD
|
|
|
4
|
LÍMITE
|
|
Ejemplo de una política POST /steeringPolicies
al utilizar la plantilla 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
Las políticas del equilibrador de carga distribuyen el tráfico entre varios puntos finales. Puede asignar pesos iguales a los puntos finales para distribuir el tráfico de manera uniforme entre los puntos finales o puede asignar pesos personalizados para el equilibrio de carga de ratio. Se aprovechan las supervisiones y los sondeos a demanda de Oracle Cloud Infrastructure Health Checks para evaluar el estado del punto final. El tráfico de DNS se distribuye automáticamente a los otros puntos finales, si se detecta que un punto final no está en buen estado. Cada una de las siguientes reglas se debe definir en el orden especificado en el campo rules
del cuerpo de la solicitud al utilizar una plantilla LOAD_BALANCE
:
Orden | Regla | Restricciones | Comentarios |
---|---|---|---|
1
|
FILTRO
|
|
|
2
|
ESTADO
|
|
Solo se incluye si se define healthCheckMonitorId para la política. |
3
|
PESADO
|
|
|
4
|
LÍMITE
|
|
Ejemplo de una política POST /steeringPolicies
mediante la plantilla 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
Las políticas de geolocalización basadas en políticas de dirección distribuyen el tráfico de DNS a diferentes puntos finales según la ubicación del usuario final. Los clientes pueden definir regiones geográficas compuestas por el continente de origen, los países o estados/provincias (Norteamérica) y definir un punto final independiente o un juego de puntos finales para cada región. Cada una de las siguientes reglas se debe definir en el orden especificado en el campo rules
del cuerpo de la solicitud al utilizar una plantilla ROUTE_BY_GEO
:
Orden | Regla | Restricciones | Comentarios |
---|---|---|---|
1
|
FILTRO
|
|
|
2
|
ESTADO
|
|
Solo se incluye si se define healthCheckMonitorId para la política. |
3
|
PRIORIDAD
|
|
|
4
|
LÍMITE
|
|
Ejemplo de cuerpo de solicitud POST /steeringPolicies
con la plantilla 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
Las políticas de dirección basadas en ASN permiten dirigir el tráfico de DNS en función de números de sistema autónomos (ASN). Las consultas de DNS que se originan a partir de un ASN específico o un juego de ASN se pueden dirigir a un punto final especificado. Cada una de las siguientes reglas se debe definir en el orden especificado en el campo rules
del cuerpo de la solicitud al utilizar una plantilla ROUTE_BY_ASN
:
Orden | Regla | Restricciones | Comentarios |
---|---|---|---|
1
|
FILTRO
|
|
|
2
|
ESTADO
|
|
Solo se incluye si se define healthCheckMonitorId para la política. |
3
|
PRIORIDAD
|
|
|
4
|
LÍMITE
|
|
Ejemplo de cuerpo de solicitud POST /steeringPolicies
con la plantilla 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
Las políticas de dirección basadas en prefijos de IP permiten a los clientes dirigir el tráfico DNS basado en el prefijo de IP de la consulta de origen. Cada una de las siguientes reglas se debe definir en el orden especificado en el campo rules
del cuerpo de la solicitud al utilizar una plantilla ROUTE_BY_IP
:
Orden | Regla | Restricciones | Comentarios |
---|---|---|---|
1
|
FILTRO
|
|
|
2
|
ESTADO
|
|
Solo se incluye si se define healthCheckMonitorId para la política. |
3
|
PRIORIDAD
|
|
|
4
|
LÍMITE
|
|
Ejemplo de cuerpo de solicitud POST /steeringPolicies
con la plantilla 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
}
]
}
PERSONALIZADA
Utilice políticas personalizadas para crear políticas complejas que combinan las capacidades de failover, equilibrio de carga, geolocalización, dirección de prefijo de IP y ASN. Las plantillas personalizadas no necesitan una secuencia reglamentada de reglas, por lo que recomendamos que se ponga en contacto con el servicio de soporte de Oracle Cloud Infrastructure antes de crear una política personalizada.
Tipos de reglas
- FILTRO
- Utiliza datos booleanos asociados a respuestas, que mantienen las respuestas solo si el valor
shouldKeep
de la regla estrue
. - ESTADO
- Utiliza supervisiones y sondeos bajo demanda de OCI Health Checks para evaluar el estado de los puntos finales y agregar y eliminar respuestas de la política según sea necesario. Se debe hacer referencia a una supervisión de comprobación del sistema en una regla de estado para afectar a la política. Para obtener más información sobre Comprobaciones del sistema, consulte Comprobaciones del sistema.
- PONDERADA
- Utiliza un número entre 0 y 255 utilizado para evaluar la frecuencia con la que se proporciona una respuesta en relación a otras respuestas. Es más probable que se devuelvan respuestas con valores más altos.
- PRIORIDAD
- Utiliza un entero asociado a cada respuesta para ordenar las respuestas del valor más bajo al más alto. Ejemplo: se devolverá una respuesta con un valor de prioridad de 1 antes de una respuesta con un valor de prioridad de 10 en la lista de respuestas. Las respuestas que no tienen un valor de prioridad asignado se mueven al final de la lista de respuestas.
- LÍMITE
- Utiliza una propiedad de recuento para filtrar todas las respuestas, excepto las primeras de la lista.