Identifier les demandes présignées - AWS Conseils prescriptifs

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Identifier les demandes présignées

Identification des demandes utilisant une URL présignée

Amazon S3 fournit deux mécanismes intégrés pour surveiller l'utilisation au niveau de la demande : les journaux d'accès au serveur Amazon S3 et les événements AWS CloudTrail liés aux données. Les deux mécanismes peuvent identifier l'utilisation des URL présignées. 

Pour filtrer les journaux en fonction de l'utilisation des URL présignées, vous pouvez utiliser le type d'authentification. Pour les journaux d'accès au serveur, examinez le champ Type d'authentification, généralement nommé authtype lorsqu'il est défini dans une table Amazon Athena. Pour CloudTrail, examinez AuthenticationMethodadditionalEventDatasur le terrain. Dans les deux cas, la valeur du champ pour les demandes utilisant des URL présignées estQueryString, alors que c'AuthHeaderest la valeur pour la plupart des autres demandes.

QueryStringl'utilisation n'est pas toujours associée aux URL présignées. Pour limiter votre recherche à l'utilisation d'URL présignées uniquement, recherchez les demandes contenant le paramètre X-Amz-Expires de chaîne de requête. Pour les journaux d'accès au serveur, examinez Request-URI et recherchez les demandes dont la chaîne de requête contient un X-Amz-Expires paramètre. Pour CloudTrail, examinez l'requestParametersélément pour un X-Amz-Expires élément.

{"Records": [{…, "requestParameters": {…, "X-Amz-Expires": "300"}}, …]}

La requête Athena suivante applique ce filtre :

SELECT * FROM {athena-table} WHERE authtype = 'QueryString' AND request_uri LIKE '%X-Amz-Expires=%';

Pour AWS CloudTrail Lake, la requête suivante applique ce filtre :

SELECT * FROM {data-store-event-id} WHERE additionalEventData['AuthenticationMethod'] = 'QueryString' AND requestParameters['X-Amz-Expires'] IS NOT NULL

Identifier d'autres types de demandes présignées

La requête POST possède également un type d'authentification uniqueHtmlForm, dans les journaux d'accès au serveur Amazon S3 et CloudTrail. Ce type d'authentification étant moins courant, il est possible que vous ne trouviez pas ces demandes dans votre environnement.

La requête Athena suivante applique le filtre pour : HtmlForm

SELECT * FROM {athena-table} WHERE authtype = 'HtmlForm';

Pour CloudTrail Lake, la requête suivante applique le filtre :

SELECT * FROM {data-store-event-id} WHERE additionalEventData['AuthenticationMethod'] = 'HtmlForm'

Identification des modèles de demandes

Vous pouvez trouver des demandes présignées en utilisant les techniques décrites dans la section précédente. Toutefois, pour rendre ces données utiles, vous devez trouver des modèles. Les TOP 10 résultats simples de votre requête peuvent fournir un aperçu, mais si cela ne suffit pas, utilisez les options de regroupement du tableau suivant.

Option de regroupement

Journaux d'accès au serveur

CloudTraillac

Description

Agent utilisateur

GROUP BY useragent

GROUP BY userAgent

Cette option de regroupement vous permet de trouver la source et le but des demandes. L'agent utilisateur est fourni par l'utilisateur et n'est pas fiable en tant que mécanisme d'authentification ou d'autorisation. Cependant, cela peut révéler beaucoup de choses si vous recherchez des modèles, car la plupart des clients utilisent une chaîne unique qui est au moins partiellement lisible par l'homme.

Demandeur

GROUP BY requester

GROUP BY userIdentity['arn']

Cette option de regroupement permet de trouver les principaux IAM qui ont signé les demandes. Si votre objectif est de bloquer ces demandes ou de créer une exception pour les demandes existantes, ces requêtes fournissent suffisamment d'informations à cette fin. Lorsque vous utilisez des rôles conformément aux meilleures pratiques IAM, le propriétaire du rôle est clairement identifié, et vous pouvez utiliser ces informations pour en savoir plus.

Adresse IP source

GROUP BY remoteip

GROUP BY sourceIPAddress

Cette option est groupée en fonction du dernier saut de traduction réseau avant d'atteindre Amazon S3.

  • Si le trafic passe par une passerelle NAT, il s'agira de l'adresse de la passerelle NAT.

  • Si le trafic passe par une passerelle Internet, il s'agira de l'adresse IP publique qui a envoyé le trafic vers la passerelle Internet.

  • Si le trafic provient de l'extérieur AWS, il s'agira de l'adresse Internet publique associée à l'origine.

  • S'il passe par un point de terminaison de cloud privé virtuel (VPC) de passerelle, il s'agira de l'adresse IP de l'instance dans le VPC.

  • S'il passe par une interface virtuelle publique (VIF), il s'agira de l'adresse IP locale du demandeur ou de tout intermédiaire tel qu'un serveur proxy ou un pare-feu qui n'expose que son adresse IP.

  • S'il passe par un point de terminaison VPC d'interface, il peut s'agir de l'adresse IP d'une instance du VPC. Il peut également s'agir d'une adresse IP provenant d'un autre VPC ou d'un réseau sur site. Comme pour les VIF publiques, il peut s'agir de l'adresse IP de n'importe quel intermédiaire.

Ces données sont utiles si votre objectif est d'imposer des contrôles réseau. Vous devrez peut-être combiner cette option avec des données telles que endpoint (pour les journaux d'accès au serveur) ou vpcEndpointId (pour CloudTrail Lake) pour clarifier la source, car différents réseaux peuvent dupliquer des adresses IP privées.

Nom du compartiment S3

GROUP BY bucket_name

GROUP BY requestParameters['bucketName']

Cette option de regroupement permet de trouver les compartiments ayant reçu des demandes. Cela vous permet d'identifier le besoin d'exceptions.