Quelle est/où est la définition du préfixe AWS?
Lors de la recherche d'un moyen de répertorier le CIDR du point de terminaison S3, j'ai rencontré la liste de préfixes Word AWS mais je ne sais pas exactement ce que cela signifie et où la terminologie est définie.
Le préfixe signifie un mot placé devant. Pour S3, selon Liste des clés hiérarchiquement à l'aide d'un préfixe et d'un délimiteur , il doit s'agir du chemin de départ vers un objet.
Cependant, il fait apparemment référence à une plage d'adresses IP. Comment se fait-il que le préfixe soit utilisé pour les plages IP? Quelle est l'histoire ou la raison?
Cela peut être utilisé à la fois pour valider une liste de préfixes donnée dans une variable et pour obtenir les blocs CIDR (plages d'adresses IP) pour le service AWS associé.
Décrit les services AWS disponibles dans un format de liste de préfixes, qui inclut le nom de la liste de préfixes et l'ID de la liste de préfixes du service et la plage d'adresses IP pour le service.
SERVICE="S3"
REGION="us-west-1"
$ curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | \
jq -r --arg SERVICE "$SERVICE" --arg REGION "${REGION}" '.prefixes[] \
| select(.service==$SERVICE and .region==$REGION)'
{
"ip_prefix": "52.92.48.0/22",
"region": "us-west-1",
"service": "S3"
}
{
"ip_prefix": "54.231.232.0/21",
"region": "us-west-1",
"service": "S3"
}
{
"ip_prefix": "52.219.20.0/22",
"region": "us-west-1",
"service": "S3"
}
{
"ip_prefix": "52.219.24.0/21",
"region": "us-west-1",
"service": "S3"
}
Points de terminaison VPC de la passerelle
Spécifiez le VPC dans lequel créer le point de terminaison et le service auquel vous vous connectez. Un service est identifié par une liste de préfixes - le nom et l'ID d'un service pour une région . Un ID de liste de préfixes utilise le formulaire pl-xxxxxxx et un nom de liste de préfixes utilise le formulaire "com.amazonaws.region.service". Utilisez le nom de la liste de préfixes (nom du service) pour créer un point de terminaison.
quelle est la signification du préfixe?
supposons que vous ayez un réseau comme 10.5.10.0/24, vous aurez donc le préfixe 10.5.10 dans ce sous-réseau de 1 à 255 et votre adresse réseau sera 10.5.10.0
Je suppose que (10.0.0.0/24) signifie (Top 24 bits partie de 32 bits IP) d'un réseau qui a 254 adresses IP de 1 à 254 (0 est réseau et 255 est diffusé). Le préfixe est le top 24 bits et le suffixe (?) Est le dernier 8 bits. La liste des N bits supérieurs qui identifie un réseau est une liste de préfixes IP.
Si vous recherchez un identifiant de liste de préfixes pour vpc endpoint
comme dynamodb/s3, alors ce n'est pas lié à IP ou CIDR. Comme cela est mentionné dans la documentation:
Un ID de liste de préfixes est requis pour créer une règle de groupe de sécurité sortante qui permet au trafic provenant d'un VPC d'accéder à un service AWS via un point de terminaison VPC de passerelle.
Donc, si vous n'avez pas d'ID de liste de préfixes dans la sortie de votre groupe de sécurité pour ec2 ou vpc-lambda, vous obtiendrez time out lors de la connexion à dynamodb
ou s3
.
Vous pouvez obtenir la liste des préfixes en exécutant
aws ec2 decrire-prefix-lists
{
"PrefixLists": [
{
"Cidrs": [
"54.231.0.0/17",
"52.216.0.0/15"
],
"PrefixListId": "pl-63c5400k",
"PrefixListName": "com.amazonaws.us-east-1.s3"
},
{
"Cidrs": [
"52.94.0.0/22",
"52.119.224.0/20"
],
"PrefixListId": "pl-02ad2a6c",
"PrefixListName": "com.amazonaws.us-east-1.dynamodb"
}
]
}
Ensuite, vous pouvez mettre ce PrefixListId
dans votre groupe de sécurité sortant via la console Web aws. Si vous utilisez terraform pour différentes régions, cela pourrait ressembler à:
resource "aws_security_group_rule" "MyService_to_DynamoDB_east" {
count = "${ lower(var.region) == "us-east-1" ? 1 : 0 }"
security_group_id = "${aws_security_group.MyService_Ext_Api.id}"
description = "DynamoDB"
type = "egress"
protocol = "tcp"
from_port = 443
to_port = 443
prefix_list_ids = ["pl-02ad2a6c"]
}
resource "aws_security_group_rule" "MyService_to_DynamoDB_west" {
count = "${ lower(var.region) == "us-west-2" ? 1 : 0 }"
security_group_id = "${aws_security_group.MyService_Ext_Api.id}"
description = "DynamoDB"
type = "egress"
protocol = "tcp"
from_port = 443
to_port = 443
prefix_list_ids = ["pl-0ca54061"]
}
Le terme liste de préfixes provient de la technologie de routage. Une adresse IP au format CIDR a un préfixe IP et un préfixe réseau (10.1.0.0/16). Le préfixe IP est 10.1 et le préfixe réseau est/16.
Par conséquent, si vous utilisez une liste d'adresses IP au format CIDR, nous l'appelons une liste de préfixes IP.
La liste des préfixes correspond aux plages IP au format CIDR qui sont attribuées au point de terminaison de passerelle VPC (S3 ou DynamoDB) dans une région. Il est spécifique à la région.
Par exemple, au 24/février 2020, la liste des préfixes pour DynamoDB dans la région us-east-2 est "52.94.4.0/24" où 52.94.4 est le préfixe IP et le préfixe réseau est /24 comme expliqué par @John Hanley. Les adresses IP que le point de terminaison de passerelle VPC pour DynamoDB peut prendre se situent entre 52.94.4.1 et 52.94.4.254 (AWS peut avoir réservé certaines adresses IP).
$ aws ec2 describe-prefix-lists
{
"PrefixLists": [
{
"Cidrs": [
"52.94.4.0/24"
],
"PrefixListId": "pl-4ca54025",
"PrefixListName": "com.amazonaws.us-east-2.dynamodb"
},
{
"Cidrs": [
"52.219.80.0/20",
"3.5.128.0/22",
"3.5.132.0/23",
"52.219.96.0/20",
"52.92.76.0/22"
],
"PrefixListId": "pl-7ba54012",
"PrefixListName": "com.amazonaws.us-east-2.s3"
}
]
}
Cette liste de préfixes a un ID et un nom. Nous pouvons spécifier l'ID de la liste des préfixes dans une table de routage VPC et dans un groupe de sécurité, mais pas dans NACL. Nous devons utiliser CIDR pour NACL.
Vous pouvez [~ # ~] pas [~ # ~] utiliser un ID de liste de préfixes dans une règle sortante dans une ACL réseau pour autoriser ou refuser le trafic sortant vers le service spécifié dans un point de terminaison. Si vos règles ACL réseau restreignent le trafic, vous devez spécifier le bloc CIDR (plage d'adresses IP) pour le service à la place. Vous pouvez cependant utiliser un ID de liste de préfixes dans une règle de groupe de sécurité sortante. Pour plus d'informations, voir Groupes de sécurité.
resource "aws_vpc_endpoint" "private_s3" {
vpc_id = "${aws_vpc.foo.id}"
service_name = "com.amazonaws.us-west-2.s3"
}
data "aws_prefix_list" "private_s3" {
prefix_list_id = "${aws_vpc_endpoint.private_s3.prefix_list_id}"
}
resource "aws_network_acl" "bar" {
vpc_id = "${aws_vpc.foo.id}"
}
resource "aws_network_acl_rule" "private_s3" {
network_acl_id = "${aws_network_acl.bar.id}"
rule_number = 200
egress = false
protocol = "tcp"
rule_action = "allow"
cidr_block = "${data.aws_prefix_list.private_s3.cidr_blocks[0]}"
from_port = 443
to_port = 443
}
resource "aws_security_group_rule" "MyService_to_DynamoDB_east" {
count = "${ lower(var.region) == "us-east-1" ? 1 : 0 }"
security_group_id = "${aws_security_group.MyService_Ext_Api.id}"
description = "DynamoDB"
type = "egress"
protocol = "tcp"
from_port = 443
to_port = 443
prefix_list_ids = ["pl-02ad2a6c"]
}
resource "aws_security_group_rule" "MyService_to_DynamoDB_west" {
count = "${ lower(var.region) == "us-west-2" ? 1 : 0 }"
security_group_id = "${aws_security_group.MyService_Ext_Api.id}"
description = "DynamoDB"
type = "egress"
protocol = "tcp"
from_port = 443
to_port = 443
prefix_list_ids = ["pl-0ca54061"]
}
Pourquoi ne puis-je pas me connecter à un compartiment S3 en utilisant un point de terminaison de passerelle VPC? liste complète des dispositions concernant le point de terminaison de passerelle VPC S3 et l'ID de la liste de préfixes et le CIDR y joueraient un rôle.
Spécifiez le VPC dans lequel créer le point de terminaison et le service auquel vous vous connectez. Un service est identifié par une liste de préfixes - le nom et l'ID d'un service pour une région. Un ID de liste de préfixes utilise le formulaire pl-xxxxxxx et un nom de liste de préfixes utilise le formulaire "com.amazonaws.region.service". Utilisez le nom de la liste de préfixes (nom du service) pour créer un point de terminaison.