L'architecture générale, le DNS et les voies HTTPS, l'AWS Direct Connect, la route 53, le résolveur, la passerelle API privée, la sécurité et le dépannage.
Il est important de noter ici: ce n'est pas une "chaîne de proxy série" par laquelle tout le trafic passe en séquence.
Il est en fait divisé en deux processus indépendants:
- Voie de résolution DNS : Responsable de la résolution du nom de domaine privé dans la propriété intellectuelle privée du point final VPC.
- Voie d'accès HTTPS : Une fois que le client obtient l'IP privée, il accède directement à l'interface VPC Endpoint via Direct Connect, puis le transfère à la passerelle API privée via AWS PrivateLink.
2. L'architecture globale
Les exemples ci-dessous utilisent la région de Tokyo, ap-northeast-1.
external company network
172.20.0.0/16
│
├─Business client
│ curl / Java / Postman / Business system
│
├─ External Company DNS
│ Conditional forwarding:
│ api.partner.example.com
│ ↓
│ 10.20.10.10
│ 10.20.20.10
│
└─ External corporate router
BGP
│
│ AWS Direct Connect
▼
Direct Connect Location
│
▼
Direct Connect Gateway
│
├─ Private VIF → VGW
│ or
└─ Transit VIF → Transit Gateway
│
▼
AWS VPC
10.20.0.0/16
│
┌──────────────┴──────────────┐
│ │
▼ ▼
Route 53 Resolver Interface VPC Endpoint
Inbound Endpoint com.amazonaws.ap-northeast-1.execute-api
UDP/TCP 53 TCP 443
10.20.10.10 10.20.11.x
10.20.20.10 10.20.21.x
│ │
▼ │
Route 53 Private Hosted Zone │
partner.example.com │
│ │
api.partner.example.com │
Alias → VPC Endpoint ─────────────┘
│
▼
API Gateway Private Domain
│
Domain Access Association
│
▼
API Mapping / Base Path
│
▼
Private REST API Gateway
│
▼
Lambda / AWS Service / VPC Link
Route 53 Resolver Inbound Endpoint reçoit des requêtes DNS du réseau local, tandis que Private Hosted Zone enregistre les noms de domaine privés; Interface VPC Endpoint est le point d'entrée réel pour les flux de données HTTPS dans API Gateway.
3. Comment une demande complète s'effectue- t- elle?
Supposons qu'un système d'entreprise externe demande:
https://api.partner.example.com/v1/orders
1. Processus de résolution du DNS
Le client demande d'abord à l'entreprise externe son DNS interne:
What is the IP of api.partner.example.com?
Envoi conditionnel configuré sur le DNS d'entreprise externe:
partner.example.com
→ 10.20.10.10
→ 10.20.20.10
Ces deux adresses IP sont les adresses IP de la route 53 Resolver Inbound Endpoint dans le VPC AWS.
La requête DNS est:
External company DNS
→ Direct Connect
→ Transit Gateway/VGW
→ Resolver Inbound Endpoint
→ Route 53 VPC Resolver
→ Private Hosted Zone
Existe dans la zone d'hébergement privé:
api.partner.example.com
A Alias
→ vpce-xxxxxxxx.execute-api.ap-northeast-1.vpce.amazonaws.com
Ce qui est finalement retourné n'est pas l'IP publique de l'API Gateway, mais l'IP privée de l'ENI de l'interface VPC Endpoint, par exemple:
10.20.11.45
10.20.21.82
L'IP du point d'extrémité entrant est elle-même une IP privée VPC, donc le réseau local doit être redirigé vers le VPC via Direct Connect ou VPN. AWS exige que chaque point d'extrémité résolveur soit configuré avec au moins deux IP, et il est recommandé de les placer dans différentes zones de disponibilité.
2. processus d'accès HTTPS
Après la fin du DNS, le client établit TCP 443 à l'IP privée de VPC Endpoint résolue:
client
→ Direct Connect
→ TGW/VGW
→ VPC Endpoint ENI:443
→ AWS PrivateLink
→ API Gateway Private Custom Domain
→ API Mapping
→ Private REST API
C' est ici. Route 53 Resolver ne participe pas à l'envoi HTTPS de Il n'est responsable que de la résolution DNS précédente.
La passerelle API privée ne peut être accessible que par l'interface VPC Endpoint d'API Gateway, et la politique de ressources API doit également autoriser le VPC ou le VPC Endpoint spécifié.
4. Pourquoi chaque service existe- t- il?
1. Connexion directe AWS
fonction
Direct Connect fournit une connexion de ligne privée entre le réseau d'entreprise externe et AWS.
Elle est principalement chargée de:
- Enroulez le segment de réseau privé d'une entreprise externe vers un VPC AWS.
- Libérer le segment réseau AWS VPC à des entreprises externes.
- Il héberge les requêtes DNS.
- Il héberge les demandes d'API HTTPS.
- Évitez le trafic commercial qui passe par Internet public.
- Fournir une bande passante et une latence relativement stables.
Ce pour quoi Direct Connect n' est pas responsable
Direct Connect lui-même n'est pas responsable de:
- Résolution DNS.
- L'authentification de l'API.
- Autorisation de l'API.
- Le certificat TLS.
- Enroulement API Gateway.
- Encrivez automatiquement tous les liens.
Direct Connect est un "circuit privé", mais il ne peut pas être simplement égalé à un "circuit crypté de bout en bout". Lorsque le cryptage de lien est nécessaire, considérez MACsec où il est pris en charge, ou en superposant Site-to-Site VPN/IPsec sur Direct Connect. must_encrypt le mode arrête la transmission si le chiffrement ne peut pas être établi; should_encrypt peut revenir à la communication non cryptée en cas d'échec.
2. Route 53 Résolver Endpoint d'entrée
fonction
Permettre aux serveurs DNS des entreprises externes de consulter le DNS au sein du VPC AWS.
Sans elle, le DNS local de l'entreprise externe ne peut pas être consulté directement:
- Zone d'hébergement privé de la route 53.
- Nom DNS privé interne de VPC.
- Les dossiers privés liés au point final du VPC.
Après la création du point final entrant, une ENI sera créée dans le sous-réseau spécifié et une IP privée fixe sera attribuée.
Pourquoi je ne peux pas demander directement aux VPC VPC+2 Le DNS ?
Les adresses DNS communes dans VPC sont similaires:
VPC CIDR:10.20.0.0/16
VPC Resolver:10.20.0.2
Mais le réseau externe ne devrait pas utiliser directement 10.20.0.2 Le point d'entrée standard pour les réseaux hybrides est le Resolver Inbound Endpoint.
3. Route 53 Zone d'hébergement privé
fonction
Enregistrer les noms de domaine privés et les enregistrements correspondants, par exemple:
Private Hosted Zone:
partner.example.com
Record:
api.partner.example.com
A Alias
→ execute-api Interface VPC Endpoint
La zone privée hébergée ne prend effet que pour le VPC associé et les requêtes entrées via le résolver entrant Endpoint correspondant. Il n'est pas nécessaire d'exposer l'adresse API réelle au DNS public.
4. Point d'extrémité de l'interface VPC
Nom du service:
com.amazonaws.ap-northeast-1.execute-api
fonction
Interface VPC Endpoint est l'entrée privée de Private API Gateway au sein de VPC.
Il crée un ENI dans chaque sous-réseau de zone de disponibilité sélectionné:
AZ-a:10.20.11.45
AZ-c:10.20.21.82
Les demandes HTTPS de sociétés externes atteignent finalement ces ENI et entrent ensuite dans l'API Gateway via AWS PrivateLink.
Interface Endpoint prend en charge:
- Groupe de sécurité.
- Politique des points d'extrémité du VPC:
- Zones de disponibilité multiples.
- Nom DNS privé.
- IPv4, IPv6 ou double pile, selon le service et la configuration.
AWS recommande que Interface Endpoint sélectionne plusieurs sous-réseaux pour améliorer la disponibilité.
5. API Gateway Domaine personnalisé privé
Par exemple:
api.partner.example.com
Elle résout deux problèmes:
Adresse d'appel conviviale
Pas besoin d' utiliser:
https://a1b2c3d4-vpce123.execute-api.ap-northeast-1.amazonaws.com/prod
Utilisez plutôt:
https://api.partner.example.com/v1
Certificat TLS
API Gateway est basé sur TLS SNI:
api.partner.example.com
Sélectionnez le certificat ACM correspondant.
Il doit être créé entre le domaine personnalisé privé et le point d'extrémité VPC:
Domain Name Access Association
Sinon, même si le DNS pointe vers le Endpoint, API Gateway ne permettra pas au Endpoint d'utiliser ce nom de domaine privé.
6. Portée d'API privée
La passerelle d'API privée est l'entrée finale de l'API.
Il peut continuer à intégrer:
- Le Lambda.
- Les services AWS.
- L'arrière-plan HTTP.
- Connectez-vous aux services ALB/NLB et intra-VPC par l'intermédiaire de VPC Link.
L'API privée ne signifie pas que " n'importe qui à travers la ligne dédiée peut l'appeler. " Au moins, les couches d'autorisation suivantes existent également:
VPC Endpoint Security Group
VPC Endpoint Policy
Private Domain Resource Policy
Private API Resource Policy
API method level authentication
Backend business certification
La politique en matière de ressources de l'API privée peut restreindre les sources par aws:SourceVpce ou aws:SourceVpc. AWS recommande de spécifier explicitement un VPC ou un VPC Endpoint au lieu d'autoriser toutes les origines.
5. Adresse recommandée et planification des ressources
Un exemple spécifique est donné ci-dessous.
| Projet | Exemple |
|---|---|
| Région AWS | ap-northeast-1 |
| VPC de l'AWS | 10.20.0.0/16 |
| Segment de réseau d'entreprise externe | 172.20.0.0/16 |
| Résolveur point final sous-réseau A | 10.20.10.0/24 |
| Résolveur sous-réseau de point d'extrémité C | 10.20.20.0/24 |
| Résolvent IP A | 10.20.10.10 |
| Résolvent IP C | 10.20.20.10 |
| execute-api sous-réseau de point d'extrémité A | 10.20.11.0/24 |
| exécuter-api sous-réseau de point d'extrémité C | 10.20.21.0/24 |
| Nom de domaine privé | api.partner.example.com |
| Zone d'hébergement privé | partner.example.com |
| Étapes de l'API | prod |
| Voie de base | v1 |
Il est recommandé de séparer le point d'extrémité du résolveur et le point d'extrémité de l'interface dans un sous-réseau dédié pour faciliter:
- Configurer le NACL de manière indépendante.
- Des journaux de flux séparés.
- Identifier les coûts.
- Contrôle indépendant des groupes de routage et de sécurité.
- Remplacement ou expansion ultérieur.
6. Première phase: Configuration de connexion directe
Scénario A: Un seul VPC
Peut être utilisé:
Direct Connect
→ Private VIF
→ Direct Connect Gateway
→ Virtual Private Gateway
→ VPC
Le VIF privé est principalement utilisé pour accéder au VPC via IP privé. Lors de la création, vous devez définir des paramètres tels que VLAN, client BGP ASN, BGP Peer IP et MTU.
Option B: Plusieurs VPC ou centre réseau partagé
Il est recommandé:
Direct Connect
→ Transit VIF
→ Direct Connect Gateway
→ Transit Gateway
→ Shared Services VPC
Il s'agit d'une conception plus courante dans les environnements d'entreprise, car elle peut être suivie par:
- Le VPC du DNS.
- L'API VPC
- Le vice-président des affaires.
- Vérifiez la sécurité.
Accès unifié à la passerelle de transit.
Transit VIF est utilisé pour se connecter à la passerelle de transit associée à la passerelle de connexion directe; les préfixes autorisés de la passerelle de connexion directe affectent les préfixes côté AWS publiés sur le réseau local.
Pas de configuration de connexion directe
1. établir une connexion physique ou hébergée
Il peut s'agir de:
- Connexion dédiée.
- Connexion hébergée fournie par des partenaires.
Les environnements de production formels d'entreprise devraient éviter d'avoir un seul lien. Le modèle de haute disponibilité d'AWS recommande d'utiliser des connexions redondantes à partir de différents appareils et de différents emplacements de connexion directe, et vous pouvez utiliser le kit d'outils Resilience pour tester le failover BGP.
2. Créer une passerelle de connexion directe
Par exemple:
Name: dxgw-partner-api
Amazon side ASN: 64520
3. Créer une passerelle de transit
Par exemple:
TGW ASN: 64530
Accrochez le VPC où se trouve l'API au TGW.
4. Associer DX Gateway et TGW
Les préfixes autorisés doivent être définis, par exemple:
10.20.0.0/16
Ne publiez pas au hasard:
0.0.0.0/0
10.0.0.0/8
Sauf si c'est une conception web explicitement vérifiée.
5. Créer le VIF de transit
Parmi les paramètres clés figurent:
VLAN: 120
Customer ASN: 65010
AWS ASN: from DXGW
Customer Peer IP: 169.254.x.x/30
AWS Peer IP: 169.254.x.x/30
BGP MD5 Key: automatically generated or specified
MTU: 1500 or 8500
6. Configurer le routeur local
Publier localement sur AWS:
172.20.0.0/16
Les versions AWS pour les locaux:
10.20.0.0/16
7. Configurer la table de routage TGW
Le côté AWS exige au moins:
172.20.0.0/16
→ Direct Connect Gateway/TGW association direction
La table des itinéraires du sous-réseau VPC de l'API exige:
172.20.0.0/16
→ Transit Gateway
Le routeur d'entreprise externe nécessite:
10.20.0.0/16
→ Direct Connect
Connectez directement les erreurs les plus courantes
L'itinéraire est configuré dans une seule direction.
Par exemple:
Les entreprises externes peuvent atteindre 10.20.11.45
Mais AWS ne sait pas comment renvoyer le trafic vers 172.20.0.0/16
Le résultat est généralement un délai de connexion TCP.
Coupe de CIDR
Par exemple:
Entreprise externe : 10.20.0.0/16
AWS VPC:10.20.0.0/16
Cette situation ne peut pas être résolue par un routage ordinaire.
- Réorganisez l'adresse.
- NAT.
- Un agent intermédiaire.
- L'architecture basée sur les services PrivateLink.
MTU incohérent
Le VIF privé peut utiliser 1500 ou 9001, le VIF transit peut utiliser 1500 ou 8500. Avant d'activer Jumbo Frame, assurez-vous que le routeur du client, l'opérateur, le lien DX, le TGW et l'équipement intermédiaire le supportent tous. Sinon, les petites demandes peuvent être normales et les grandes demandes peuvent être bloquées.
7. Étape 2: Créez la Route 53 résolver Endpoint d'entrée
1. Créer un groupe de sécurité
Par exemple:
sg-r53-inbound
Règles relatives aux entrées:
UDP 53
Source: External company DNS server IP/32
TCP 53
Source: External company DNS server IP/32
Par exemple:
UDP 53 ← 172.20.1.10/32
UDP 53 ← 172.20.1.11/32
TCP 53 ← 172.20.1.10/32
TCP 53 ← 172.20.1.11/32
Ne pas simplement ouvrir UDP 53. TCP peut être utilisé dans les situations suivantes:
- La réponse DNS est trop grande.
- DNSSEC.
- Essayez à nouveau après la coupure UDP.
- Le comportement de certains produits DNS internes.
AWS exige explicitement que le groupe de sécurité Inbound Endpoint autorise TCP et UDP 53.
2. Créer un point d'arrivée
Parcours de la console:
Route 53
→ Resolver
→ Inbound endpoints
→ Create inbound endpoint
Les paramètres recommandés:
Name: r53-inbound-partner-api
VPC: vpc-api-shared
Endpoint category: Default
Protocol: Do53
Security Group: sg-r53-inbound
Configurer deux AZ:
AZ-a
Subnet: subnet-dns-a
IP: 10.20.10.10
AZ-c
Subnet: subnet-dns-c
IP: 10.20.20.10
AWS exige un minimum de deux IP et recommande d'être dans différentes zones de disponibilité; ces IP restent inchangés pendant la durée de vie du point final.
3. Envoi conditionnel de la configuration DNS de l'entreprise externe
Exemple DNS de Windows:
Conditional Forwarder:
partner.example.com
Master Servers:
10.20.10.10
10.20.20.10
Exemple BIND:
zone "partner.example.com" {
type forward;
forward only;
forwarders {
10.20.10.10;
10.20.20.10;
};
};
Il est recommandé de transmettre uniquement le nom de domaine précis:
partner.example.com
Ne configurez pas inutilement:
.
com
example.com
Dans le cas contraire, un grand nombre de requêtes DNS non pertinentes peuvent être redirigées vers AWS.
4. Vérifiez le lien DNS
Testez directement l'IP de AWS Resolver:
dig @10.20.10.10 api.partner.example.com
Alors passez le test DNS normal de l'entreprise externe:
dig api.partner.example.com
À un stade précoce, lorsque la zone d'hébergement privé n'a pas été créée, NXDOMAIN peut être retourné, ce qui prouve au moins que la demande a atteint le résolveur.
8. Étape 3: Créer un VPC Endpoint d'interface execute-api
1. Créer un groupe de sécurité Endpoint
Par exemple:
sg-vpce-execute-api
Règles relatives aux entrées:
TCP 443
Source: 172.20.0.0/16
Lorsqu'il est plus strict, seul le segment réseau du système d'entreprise est autorisé:
TCP 443
Source: 172.20.10.0/24
Ne commettez pas l'erreur de penser que le simple fait d'autoriser VPC CIDR suffit. L'appelant est situé dans un réseau d'entreprise externe. La source vue par VPC Endpoint est généralement l'IP privée originale de l'entreprise externe, il faut donc autoriser le segment réseau correspondant.
AWS exige que le groupe de sécurité Endpoint execute-api autorise le trafic HTTPS 443.
2. Créer un objectif final
Parcours de la console:
VPC
→ Endpoints
→ Create endpoint
Sélectionnez:
Service category: AWS services
Service:
com.amazonaws.ap-northeast-1.execute-api
Type:
Interface
Configuration:
VPC: vpc-api-shared
Subnets:
subnet-endpoint-a
subnet-endpoint-c
Security Group:
sg-vpce-execute-api
Private DNS:
Enabled
Il est recommandé de sélectionner au moins deux zones de disponibilité. Seul un sous-réseau peut être sélectionné pour chaque AZ sélectionné, et AWS créera un ENI d'Endpoint dans chaque sous-réseau.
Exemple d'AWS CLI:
aws ec2 create-vpc-endpoint \
--region ap-northeast-1 \
--vpc-id vpc-0123456789abcdef0 \
--vpc-endpoint-type Interface \
--service-name com.amazonaws.ap-northeast-1.execute-api \
--subnet-ids subnet-aaa subnet-ccc \
--security-group-ids sg-0123456789abcdef0 \
--private-dns-enabled
3. L'impact du commutateur DNS privé
Après avoir activé l' execute-api DNS privé:
*.execute-api.ap-northeast-1.amazonaws.com
Dans le cadre de ce VPC, le VPC Endpoint sera résolu en premier.
Il est plus pratique d'appeler le nom de domaine par défaut de l'API privée, mais il a également des effets secondaires:
- Lors de l'accès à l'API public Gateway par défaut
execute-apiURL dans un VPC, il peut être résolu à Private Endpoint. - Par conséquent, l'API publique peut ne pas être accessible par le nom de domaine par défaut.
- Il est préférable d'utiliser votre propre domaine régional personnalisé pour l'API du réseau public.
La documentation AWS rappelle clairement qu'après avoir activé le DNS privé d'exécution-api Endpoint, l'accès à l'API publique par l'intermédiaire du point d'exécution par défaut du VPC peut être affecté.
9. Étape 4: Créer une API REST privée
1. Créer une API
La console:
API Gateway
→ Create API
→ REST API
→ Build
Sélectionnez:
Endpoint type: Private
IP address type: Dualstack
VPC Endpoint IDs: vpce-xxxxxxxx
La passerelle API privée se réfère ici à REST API Endpoint privéUne fois associé, API Gateway génère le nom DNS d'appel lié à l'ID API et à l'ID Endpoint.
Exemple de CLI:
aws apigateway create-rest-api \
--region ap-northeast-1 \
--name partner-private-api \
--endpoint-configuration '{
"types":["PRIVATE"],
"ipAddressType":"dualstack",
"vpcEndpointIds":["vpce-0123456789abcdef0"]
}'
2. Créer des ressources et des méthodes
Par exemple:
/
└── orders
├── GET
└── POST
Ou bien:
/health
/orders
/orders/{orderId}
Après avoir configuré Lambda ou une autre intégration, déployer à:
Stage: prod
3. Politique en matière de ressources de l'API
Il est recommandé d'autoriser uniquement le point final spécifié:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "execute-api:/*"
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "execute-api:/*",
"Condition": {
"StringNotEquals": {
"aws:SourceVpce": "vpce-0123456789abcdef0"
}
}
}
]
}
La signification de cette façon d'écrire est:
- En principe, les appels sont autorisés.
- Mais tant que le point final source n'est pas le point final spécifié, il sera explicitement rejeté.
AWS fournit des exemples de politiques de ressources API privées basées sur aws:SourceVpce et aws:SourceVpc.
Après avoir modifié la politique des ressources, l'API doit être redéploiée.
10. Étape 5: Certificat et domaine personnalisé privé
1. Préparer le certificat ACM
Le certificat doit couvrir:
api.partner.example.com
Et le certificat doit être situé dans la région où se trouve l'API Gateway, par exemple:
ap-northeast-1
Vous pouvez utiliser:
api.partner.example.com
ou, le cas échéant:
*.partner.example.com
Le domaine privé personnalisé prend en charge les certificats de carte blanche, mais ne prend pas en charge le nom de domaine personnalisé de carte blanche lui-même; les noms de domaine privés utilisent toujours TLS 1.2.
Problèmes importants concernant les certificats publics ACM
Même si le nom de domaine est uniquement utilisé pour l'intranet, ACM doit toujours vérifier la propriété du nom de domaine lors de la demande d'un certificat public ACM.
Les enregistrements de vérification DNS doivent être découverts par l'ACM à partir du DNS public.
Par conséquent, une approche plus sûre est la suivante:
- Utilisez un sous-domaine de nom de domaine public qui appartient réellement à l'entreprise, tel que
api.partner.example.com. - Mettez uniquement le CNAME vérifié par ACM dans le DNS public.
- L'enregistrement A de l'API réelle est placé uniquement dans la zone d'hébergement privé.
- Le DNS du réseau public n'a pas besoin de publier l'adresse réelle de l'API.
2. Créer un domaine privé personnalisé
La console:
API Gateway
→ Custom domain names
→ Add domain name
Configuration:
Domain name:
api.partner.example.com
Endpoint type:
Private
Routing mode:
API mappings only
ACM Certificate:
Certificate covering api.partner.example.com
Après la création, API Gateway configurera initialement une politique qui refuse tout accès au nom de domaine et nécessite une autorisation manuelle pour spécifier le VPC Endpoint.
Exemple de CLI:
aws apigateway create-domain-name \
--region ap-northeast-1 \
--domain-name api.partner.example.com \
--certificate-arn arn:aws:acm:ap-northeast-1:111122223333:certificate/xxxxxxxx \
--security-policy TLS_1_2 \
--endpoint-configuration '{"types":["PRIVATE"]}' \
--policy file://domain-policy.json
11. Politique en matière de ressources de domaine privé
Le domaine privé lui-même doit également permettre de spécifier le point final du VPC.
domain-policy.json:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "execute-api:/*"
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "execute-api:/*",
"Condition": {
"StringNotEquals": {
"aws:SourceVpce": "vpce-0123456789abcdef0"
}
}
}
]
}
Voici un point très facile à négliger:
Pour qu'une demande soit couronnée de succès, au moins ce qui suit doit être vrai:
Private Domain Policy allows
Private API Policy allows
VPC Endpoint Policy allows
Method level authentication allows
AWS exige explicitement l'API privée et le domaine personnalisé privé pour configurer les politiques de ressources séparément.
12. Étape 6: Créer une API de cartographie
Par exemple, l'espoir:
https://api.partner.example.com/v1/orders
Carte de:
API: partner-private-api
Stage: prod
Base Path: v1
La console:
API Gateway
→ Custom domain names
→ api.partner.example.com
→ API mappings
→ Configure mappings
Les paramètres:
API: partner-private-api
Stage: prod
Path: v1
CLI:
aws apigateway create-base-path-mapping \
--region ap-northeast-1 \
--domain-name api.partner.example.com \
--domain-name-id abcd1234 \
--rest-api-id a1b2c3d4 \
--stage prod \
--base-path v1
Le domaine personnalisé privé doit être mappé à des API et étapes privées spécifiques par l'intermédiaire de règles de cartographie ou de routage de l'API.
13. Étape 7: Créer une association d'accès aux noms de domaine
C'est l'étape la plus facile à manquer dans l'architecture du domaine privé personnalisé.
Il faut construire:
Private Custom Domain
↕
execute-api VPC Endpoint
La console:
API Gateway
→ Custom domain names
→ api.partner.example.com
→ Resource sharing
→ Domain name access associations
→ Create
Sélectionnez:
Domain ARN:
arn:aws:apigateway:ap-northeast-1:111122223333:
/domainnames/api.partner.example.com+domain-id
VPC Endpoint:
vpce-0123456789abcdef0
CLI:
aws apigateway create-domain-name-access-association \
--region ap-northeast-1 \
--domain-name-arn \
arn:aws:apigateway:ap-northeast-1:111122223333:/domainnames/api.partner.example.com+abcd1234 \
--access-association-source vpce-0123456789abcdef0 \
--access-association-source-type VPCE
Il peut prendre environ 15 minutes pour que l'association soit disponible après sa création, et il peut également prendre un certain temps pour la création du domaine privé personnalisé lui-même ou la mise à jour du certificat.
14. Étape 8: Configurer la politique des points d'extrémité de VPC
Contrôle de la politique des points d'extrémité:
Il n'est pas recommandé de maintenir un accès complet pendant de longues périodes.
Par exemple, seuls les domaines et API sont autorisés à être spécifiés:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": [
"arn:aws:execute-api:ap-northeast-1:111122223333:/domainnames/api.partner.example.com+abcd1234",
"arn:aws:execute-api:ap-northeast-1:111122223333:a1b2c3d4/*"
]
}
]
}
Vous pouvez également utiliser execute-api:viaDomainArn Pour restreindre l'accès uniquement au domaine privé personnalisé spécifié. AWS donne un exemple de restriction de la politique de VPC Endpoint par nom de domaine privé, API et méthode.
Notes d'en-tête d'autorisation
La politique des points finaux évalue d'abord les résultats de la demande. Authorization en-tête:
- Aucune autorisation: évaluée par le directeur anonyme.
- Correction SigV4: Identifié comme directeur de l'IAM.
- Erreur SigV4: rejet direct.
- Token porteur/JWT: La politique de point final est généralement toujours évaluée sur la base de Principal anonyme.
Par conséquent, si la couche commerciale utilise OAuth/JWT/Lambda Authorizer, ne demandez pas à tort un Utilisateur IAM dans la Politique des points d'arrêt, sinon les demandes légitimes de JWT peuvent être bloquées par la Politique des points d'arrêt.
15. Étape 9: Créer des enregistrements de zones privées hébergées et d'alias
1. Créer une zone d'hébergement privée
Il est recommandé de créer:
partner.example.com
et associer un PCV contenant les ressources suivantes:
- Résolvez le point final entrant.
- Exécuter-api VPC Endpoint。
Au moins la zone d'hébergement privée doit être associée au VPC où se trouve le point final entrant, afin que le résolveur puisse utiliser la zone d'hébergement pour répondre aux requêtes externes.
CLI:
aws route53 create-hosted-zone \
--name partner.example.com \
--caller-reference "$(date +%s)" \
--hosted-zone-config Comment="Partner private API",PrivateZone=true \
--vpc VPCRegion=ap-northeast-1,VPCId=vpc-0123456789abcdef0
2. Créer des enregistrements d'alias
La console:
Route 53
→ Hosted zones
→ partner.example.com
→ Create record
Configuration:
Record name:
api
Record type:
A
Alias:
On
Route traffic to:
Alias to VPC endpoint
Region:
ap-northeast-1
Endpoint:
vpce-0123456789abcdef0
L'objectif de l'alias Route 53 du domaine personnalisé API privé devrait être le point d'exécution de l'interface VPC de l'API, et non le point d'exécution Lambda, API ID ou Resolver.
Exemple d'enregistrement CLI:
{
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "api.partner.example.com",
"Type": "A",
"AliasTarget": {
"DNSName": "vpce-0123456789abcdef0.execute-api.ap-northeast-1.vpce.amazonaws.com",
"HostedZoneId": "VPC_ENDPOINT_HOSTED_ZONE_ID",
"EvaluateTargetHealth": false
}
}
}
]
}
Puis:
aws route53 change-resource-record-sets \
--hosted-zone-id Z0123456789ABCDEFG \
--change-batch file://api-alias.json
Si le point final utilise IPv6 ou Dualstack, ajoutez des enregistrements AAAA selon les besoins réels.
16. a) Qu'est- ce que la société extérieure doit définitivement configurer? b) Qu'est- ce que la société extérieure doit définitivement configurer?
Les entreprises extérieures n'ont généralement besoin d'accéder qu'aux informations suivantes.
Informations sur le réseau
AWS target network segment:
10.20.0.0/16
Agreement:
DNS UDP/TCP 53
HTTPS TCP 443
Informations sur le DNS
Forwarding domain:
partner.example.com
DNS target:
10.20.10.10
10.20.20.10
Informations sur l'API
Base URL:
https://api.partner.example.com/v1
Health check:
GET /health
Business API:
GET /orders
POST /orders
Informations sur la certification
En fonction de la conception, par exemple:
- OAuth2/JWT。
- L'autorisation Lambda de l'API Gateway
- Il s'agit d'un outil d'exploitation de l'AWS IAM SigV4.
- La signature du HMAC.
- Cognito Token
- Nom d'utilisateur/mot de passe d'entreprise, ne doit pas être utilisé seul.
- La clé API ne convient qu'à la mesure et au plan d'utilisation et ne doit pas être utilisée comme seule authentification de sécurité.
L'API privée ne prend actuellement pas en charge la fonction TLS mutuelle de l'API Gateway, de sorte que l'authentification de certificats bidirectionnels B2B ne peut pas être configurée directement selon la méthode mTLS de l'API régionale du réseau public. Vous pouvez utiliser IAM SigV4, JWT/Lambda Authorizer, vérification des certificats de couche d'application ou redessiner la couche proxy avant.
17. Couche complète de contrôle de sécurité
Il est recommandé de diviser les contrôles en six couches.
Couche 1: Routage de connexion directe
Publier uniquement les segments de réseau nécessaires:
External Company → AWS:
10.20.0.0/16
AWS → External Company:
172.20.10.0/24
Essayez de ne pas publier des segments de réseau d'entreprise entiers les uns aux autres.
Deuxième couche: groupe de sécurité Resolver Endpoint
Seuls les serveurs DNS officiels de sociétés externes sont autorisés:
UDP/TCP 53
172.20.1.10/32
172.20.1.11/32
Ne permettez pas à tous les clients de consulter directement le Resolver.
La troisième couche: groupe de sécurité d'exécuter-api Endpoint
Seuls les segments de réseau source du système d'entreprise sont autorisés:
TCP 443
172.20.10.0/24
Couche 4: Politique des points d'extrémité des VPC
Seuls autorisés:
Specify Private Domain
Specify API
Specify method or stage
Couche 5: Politique de domaine et de ressources API
Elle a également été adoptée:
aws:SourceVpce
Limiter le point d'extrémité spécifié.
Lorsque vous devez restreindre davantage les IP d'origine externe, la politique de ressources API privée peut être utilisée:
aws:VpcSourceIp
Parce que VPC Endpoint peut réécrire l'IP source de la couche réseau, aws:VpcSourceIp est utilisé pour déterminer l'adresse source de la demande initiale.
Niveau 6: Certification au niveau des méthodes et des entreprises
Par exemple:
OAuth2 Access Token
JWT Claims
Partner ID
Scope
Order permissions
Call frequency
business audit
Le fait d'être accessible par le réseau ne signifie pas que l'entreprise a accès.
18. Les points clés à prendre en compte dans la conception du DNS
1. Le DNS de l'horizon divisé
Supposons que l'entreprise externe soit déjà gérée en interne:
example.com
AWS crée à nouveau:
Private Hosted Zone: example.com
Ensuite, des conflits de DNS et d'autorité peuvent survenir.
Il est plus recommandé de diviser les sous-domaines dédiés:
aws-api.example.com
partner-api.example.com
private.example.com
Il suffit alors de transmettre conditionnellement ce sous-domaine.
2. Erreur d'association de la zone privée hébergée
si:
Resolver Endpoint in VPC-A
Private Hosted Zone is only associated with VPC-B
Le point final entrant peut ne pas résoudre la zone d'hébergement comme prévu.
Le moyen le plus simple est:
Private Hosted Zone
Also associate the VPC where the Resolver Endpoint is located
And the VPC where the execute-api Endpoint is located
C'est plus facile si les deux sont dans le même VPC.
3. N'écrivez pas la propriété intellectuelle de Resolver dans l'entreprise
Une erreur:
api.partner.example.com
A → 10.20.10.10
10.20.10.10 est un serveur DNS, pas un serveur API.
C' est vrai .
api.partner.example.com
A Alias → execute-api VPC Endpoint
4. TTL et mise en cache
Après les modifications de l'enregistrement de la zone d'hébergement privé, le DNS d'entreprise externe et les clients peuvent continuer à utiliser le cache.
Lors du test, vous pouvez:
dig api.partner.example.com
Observez le TTL, et nettoyez:
- Le cache DNS de Windows.
- Le système d'exploitation
systemd-resolveddans le cache. - Le cache DNS Java JVM.
- La mise en cache du DNS de l'entreprise.
19. Conception à haute disponibilité
Connexion directe
Pour les environnements de production, considérez au moins:
DX Connection A
DX Connection B
different devices
Best Different DX Location
et préparer:
Site-to-Site VPN Backup
Utilisez les attributs BGP pour contrôler activement et en attente.
Résolver le point final entrant
Au moins deux AZ:
10.20.10.10
10.20.20.10
Le DNS externe est configuré avec deux expéditeurs en même temps.
Chaque IP Endpoint Resolver peut gérer un grand nombre de requêtes; la documentation AWS actuelle stipule qu'une seule IP peut gérer jusqu'à environ 10 000 UDP DNS QPS lorsque les conditions sont appropriées, mais la capacité réelle est affectée par la taille de la requête, le protocole, la latence de réponse et le suivi des connexions de groupe de sécurité.
Point d'extrémité de l'interface VPC
Au moins deux AZ:
Endpoint ENI A
Endpoint ENI C
L'alias de la route 53 renverra l'adresse correspondante du point final.
AWS recommande également clairement que les Domaines personnalisés privés utilisent des Endpoints VPC dans au moins deux zones de disponibilité.
Portée d'accès à l'API
API Gateway lui-même est un service d'hébergement régional et ne nécessite pas le déploiement d'instances actives et en attente de type EC2.
- La synchronisation Lambda.
- Le lien VPC:
- L'ALB/NLB présente plusieurs AZ.
- La base de données a plusieurs AZ.
- Récupération des catastrophes interrégionales.
20. La surveillance et l'exploitation forestière
Il est recommandé d'activer au moins les éléments suivants.
Connexion directe
Moniteur:
ConnectionState
VirtualInterfaceBpsIngress
VirtualInterfaceBpsEgress
VirtualInterfacePpsIngress
VirtualInterfacePpsEgress
BGP status
L'outil de résilience AWS prend en charge la vérification des itinéraires redondants en fermant temporairement la session BGP.
Route 53 résolver
Activer:
Resolver Query Logging
CloudWatch Resolver Endpoint Metrics
Rechercher les journaux peut aider à confirmer:
- Si une requête de nom de domaine a été reçue.
- De quel VPC vient la requête.
- C'est un type curieux.
- Retour des résultats.
Il convient de noter que les requêtes répétées touchées par le cache Resolver n'apparaissent généralement pas dans le journal de requête comme chaque requête indépendante.
VPC
Activer:
VPC Flow Logs
Les faits saillants:
- Résolvent le point d'extrémité ENI。
- exécuter-api Endpoint ENI。
- Traffic lié au TGW.
- Accepter ou rejeter:
- IP de source, IP de destination, port.
Portée d'accès à l'API
Activer:
Access Logs
Execution Logs
Detailed Metrics
AWS X-Ray, on demand
Il est recommandé que les journaux d'accès contiennent au moins:
$requestId
$context.identity.sourceIp
$context.domainName
$context.httpMethod
$context.resourcePath
$context.status
$context.responseLength
$context.integrationErrorMessage
21. Séquence d'essai standard
Ne fuis pas tout simplement. curl d'abord, test par couche.
Étape 1: Vérifiez le BGP et le routage
Le routeur externe confirme avoir appris:
10.20.0.0/16
L'AWS confirme avoir appris:
172.20.0.0/16
Étape 2: Testez directement le résolveur
dig @10.20.10.10 api.partner.example.com A
dig @10.20.20.10 api.partner.example.com A
Étape 3: passer le test DNS formel par une entreprise externe
dig api.partner.example.com A
Il convient de renvoyer l'adresse IP privée du point final.
Étape 4: Testez TCP 443
nc -vz api.partner.example.com 443
Ou bien:
telnet api.partner.example.com 443
Étape 5: Vérifiez le certificat TLS
openssl s_client \
-connect api.partner.example.com:443 \
-servername api.partner.example.com
Vérifiez:
Subject Alternative Name
Issuer
Validity
TLS version
Certificate chain
Étape 6: Appelez le médecin
curl -v https://api.partner.example.com/v1/health
Étape 7: Appel avec authentification
Prenons l'exemple de JWT:
curl -v \
-H "Authorization: Bearer ${TOKEN}" \
https://api.partner.example.com/v1/orders
Les scénarios SigV4 peuvent utiliser le SDK, AWS CLI ou la bibliothèque de signatures correspondante qui prend en charge les signatures.
22. Les défauts communs et les méthodes de jugement
1. Délais d'expiration des demandes DNS
Des performances:
dig timeout
Contrôles prioritaires:
External DNS to Resolver IP routing
TGW routing
VPC subnet routing
Resolver SG UDP/TCP 53
external firewall
NACL
2. Le DNS renvoie le NXDOMAIN
Cela signifie que le réseau et le serveur DNS peuvent être connectés, mais il y a un problème avec la couche d'enregistrement.
Vérifiez:
Private Hosted Zone name
A Alias record
Hosted Zone is associated with VPC
Is the FQDN queried correct?
Is there a more specific conflict Hosted Zone
Le nom de domaine peut être résolu, mais TCP 443 fois hors.
Vérifiez:
execute-api Endpoint SG
External routing to Endpoint ENI
NACL
TGW backhaul routing
external firewall
4. Non-conformité du nom du certificat TLS
Par exemple, le certificat est:
*.example.com
Mais le nom de domaine est:
api.partner.example.com
*.example.com ne couvre qu'une seule couche:
api.example.com
Généralement non couverts:
api.partner.example.com
Il convient d'utiliser:
*.partner.example.com
ou un certificat exact:
api.partner.example.com
5. Retour 403 interdit
L'ordre de vérification:
Is Domain Name Access Association AVAILABLE?
Domain Resource Policy
API Resource Policy
VPC Endpoint Policy
MethodAuthorization
JWT/IAM signature
API Key/Usage Plan
6. Retourner le jeton d'authentification manquant
Motifs communs:
Base Path error
Stage mapping error
HTTP method error
Resource path does not exist
API not redeployed
Par exemple, la cartographie réelle:
/v1 → prod
C' est vrai .
https://api.partner.example.com/v1/orders
Une erreur:
https://api.partner.example.com/prod/orders
7. L'URL par défaut d'exécution-api peut être consultée, mais le domaine personnalisé ne peut pas
Les points clés à vérifier:
ACM certificate
Private Domain status
Domain Resource Policy
Domain Access Association
API Mapping
Route 53 Alias
Host/SNI
8. Elle peut être consultée au sein du PCV, mais pas par des sociétés externes.
Généralement dit:
API Gateway configuration is basically correct
The problem is focused on DX routing, Endpoint SG or external DNS
9. Les petites demandes sont normales, mais les grandes échouent.
Vérifiez:
MTU
PMTUD
ICMP Fragmentation Needed
intermediate firewall
Jumbo Frame
Les dix endroits les plus faciles à manquer
- Direct Connect n'est pas automatiquement crypté.
- DNS et HTTPS sont deux chemins différents.
- Les États membres Le résolver Endpoint doit ouvrir à la fois UDP et TCP 53.
- La zone d'hébergement privé doit être associée au VPC où se trouve le résolveur.
- L'alias cible est l'exécution-api VPC Endpoint, pas Resolver.
- Les États membres Exécuter-api Le groupe de sécurité Endpoint doit permettre le segment TCP 443 du réseau source de l'entreprise externe.
- La politique de domaine privé et la politique d'API privée sont deux politiques.
- doit créer une association d'accès aux noms de domaine.
- doit être redéployé après modification de l'association ou de la ressource Endpoint de l'API.
- L'enregistrement de vérification DNS du Le certificat public ACM doit être consultable à partir du DNS public et ne peut être placé que dans la zone d'hébergement privée.
24. Configuration de production finale recommandée
La configuration suivante est recommandée pour les systèmes B2B formels:
Two Direct Connect
+ VPN backup link
Transit VIF
+ Direct Connect Gateway
+ Transit Gateway
Standalone Shared Services VPC
Resolver Inbound Endpoint of two AZs
+ Only allow official DNS servers UDP/TCP 53
execute-api Interface Endpoint of two AZs
+ Only allow external business network segment TCP 443
Dedicated private subdomain
api.partner.example.com
Private Custom Domain
+ ACM Certificate
+ Domain Access Association
Private Domain Policy
+ API Resource Policy
+ Endpoint Policy
All restrictions aws:SourceVpce
JWT or IAM SigV4 authentication
+ API Gateway Access Logs
+ Resolver Query Logs
+ VPC Flow Logs
+ DX CloudWatch Alert
Le lien final peut être résumé comme suit:
DNS:
External DNS
→ Direct Connect
→ Resolver Inbound Endpoint
→ Private Hosted Zone
→ Return to VPC Endpoint private IP
HTTPS:
External business system
→ Direct Connect
→ execute-api Interface Endpoint
→ Private Custom Domain
→ API Mapping
→ Private REST API
→ Backend services