Je souhaite autoriser le trafic provenant uniquement de points de terminaison ou d'adresses IP Amazon Virtual Private Cloud (Amazon VPC) spécifiques vers mon compartiment Amazon Simple Storage Service (Amazon S3).
Résolution
Utilisez une stratégie de compartiment pour spécifier les points de terminaison de VPC, les adresses IP privées ou les adresses IP publiques qui peuvent accéder à votre compartiment S3.
Avertissement : Les exemples suivants de stratégies de compartiment interdisent explicitement l’accès à toutes les requêtes en dehors des points de terminaison de VPC ou des adresses IP autorisés. Évaluez vos stratégies de compartiment pour déterminer si elles ont une incidence sur les requêtes liées à la console.
Si votre stratégie refuse l'accès à toutes les actions S3, l’accès à votre compartiment vous est bloqué. Avant d’enregistrer votre stratégie de compartiment, assurez-vous de l’examiner. Si vous bloquez l’accès à votre compartiment, consultez la section Comment puis-je retrouver l'accès à mon compartiment Amazon S3 après avoir accidentellement refusé l'accès à tout le monde ?
Restreindre l'accès à des points de terminaison de VPC spécifiques
Pour autoriser le trafic provenant uniquement des points de terminaison de VPC que vous spécifiez, utilisez la clé aws:SourceVpce dans votre stratégie de compartiment. L'exemple de stratégie de compartiment suivant refuse les autorisations de chargement vers le compartiment, sauf si la requête de chargement provient des points de terminaison de VPC vpce-1111111 ou vpce-2222222 :
{
"Id": "VPCe",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VPCe",
"Action": "s3:PutObject",
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
"Condition": {
"StringNotEquals": {
"aws:SourceVpce": [
"vpce-1111111",
"vpce-2222222"
]
}
},
"Principal": "*"
}
]
}
Pour utiliser la stratégie précédente avec la condition aws:sourceVpce, attachez un point de terminaison de passerelle VPC à la table de routage du sous-réseau de l'instance Amazon Elastic Compute Cloud (Amazon EC2). Le point de terminaison doit se trouver dans la même région AWS que le compartiment.
Restreindre l'accès à des adresses IP privées spécifiques
Pour autoriser le trafic provenant uniquement des adresses IP privées que vous spécifiez, utilisez la clé aws:VpcSourceIp dans votre stratégie de compartiment. L'exemple de stratégie de compartiment suivant refuse les autorisations de chargement vers le compartiment à moins que la requête de chargement ne provienne des adresses IP privées 10.1.1.1/32 ou 172.1.1.1/32 :
{
"Id": "VpcSourceIp",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VpcSourceIp",
"Action": "s3:PutObject",
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
"Condition": {
"NotIpAddress": {
"aws:VpcSourceIp": [
"10.1.1.1/32",
"172.1.1.1/32"
]
}
},
"Principal": "*"
}
]
}
Pour utiliser la stratégie précédente avec la condition aws:VpcSourceIP, vous devez attacher un point de terminaison de passerelle VPC pour Amazon S3 à la table de routage du sous-réseau de l'instance EC2. Le point de terminaison doit se trouver dans la même région que le compartiment.
Restreindre l'accès à des adresses IP publiques spécifiques
Pour autoriser le trafic provenant uniquement des adresses IP publiques que vous spécifiez, utilisez la clé aws:SourceIp dans votre stratégie de compartiment. L'exemple de stratégie de compartiment suivant refuse les autorisations de chargement vers le compartiment, sauf si la requête de chargement provient des adresses IP publiques 11.11.11.11/32 ou 22.22.22.22/32 :
{
"Id": "SourceIP",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SourceIP",
"Action": "s3:PutObject",
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"11.11.11.11/32",
"22.22.22.22/32"
]
}
},
"Principal": "*"
}
]
}
Pour autoriser des entités AWS Identity and Access Management (IAM) spécifiques du même compte AWS à accéder au compartiment, incluez la clé aws:PrincipalArn dans le bloc Condition de votre stratégie :
"Condition": {
"ArnNotLike": {
"aws:PrincipalArn": [
"arn:aws:iam::123456789012:role/role-name",
"arn:aws:iam::123456789012:user/user-name",
"arn:aws:iam::123456789012:root"
]
}
}
Pour permettre aux utilisateurs d’effectuer des actions S3 sur le compartiment à partir des points de terminaison ou des adresses IP d’un VPC, accordez explicitement des autorisations de niveau utilisateur. Vous pouvez modifier une stratégie IAM ou une autre instruction de la stratégie de compartiment pour accorder des autorisations au niveau de l'utilisateur.