web-dev-qa-db-fra.com

Qu'est-ce que AWS Prefix en fait?

Question

Quelle est/où est la définition du préfixe AWS?

Contexte

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.

Confusion

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?

Terraform aws_prefix_list

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écrire-préfixe-listes

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.

Plages d'adresses IP AWS

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"
}

Mettre à jour

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.

11
mon

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"]
}
2
LeOn - Han Li

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.

7
John Hanley

Qu'est-ce que la liste des préfixes dans le contexte AWS VPC

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.

enter image description here

  • Points de terminaison VPC de la passerelle

    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é.

Exemples de Terraform

NACL

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
}

Groupe de sécurité fourni par @LeOn - Han Li dans sa réponse.

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"]
}

Contrôle d'accès

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.

  • Paramètres DNS dans votre VPC
    Important: la résolution DNS doit être activée dans votre VPC (voir Limitations des points de terminaison de la passerelle). Si vous utilisez votre propre serveur DNS, assurez-vous que les demandes DNS adressées aux services AWS sont résolues en adresses IP gérées par AWS.
  • Acheminer les paramètres de la table vers Amazon S3
  • Règles sortantes du groupe de sécurité
  • Règles ACL réseau
  • Stratégie de point de terminaison de passerelle VPC
  • Politique de compartiment S3
  • Politique IAM

Références

  • 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.

1
mon