Fermer le téléchargement anonyme

CybersécuritéBeginner
Pratiquer maintenant

Introduction

Une petite équipe de support stocke l’aide publique et les relevés clients dans un même bucket. Le portail signe normalement les requêtes de lecture des relevés ; les visiteurs ne devraient lire que l’aide. Une politique erronée expose désormais les documents internes anonymement. Vous réduirez l’accès sans supprimer les données métier.

Utilisez Storage Admin pour ce laboratoire. Document Portal affiche l’application préparée ; Portal App est son compte local distinct. Tous les documents et identifiants sont synthétiques. VersityGW 1.10.0 est une passerelle locale compatible S3 utilisant ses noms d’utilisateurs internes comme principaux. Ce laboratoire ne reproduit ni AWS IAM ni Public Access Block au niveau du compte. Une utilisation élémentaire du terminal suffit ; aucun compte cloud n’est nécessaire.

Télécharger un document public normal

Dans cette étape, récupérez le document d’aide destiné aux visiteurs.

Sélectionnez l’onglet Storage Admin dans l’interface du laboratoire pour commencer cette étape.

Un bucket est une collection nommée d’objets. Une clé d’objet est son nom stocké : public/help.txt utilise un préfixe, public/, plutôt que des permissions de répertoire ordinaires. Ici, le bucket est documents. L’endpoint http://127.0.0.1:7070 désigne le service de stockage de cette VM.

curl effectue une requête HTTP. Sans identifiants, il représente un visiteur anonyme. Dans Storage Admin, exécutez :

Passez à l’onglet Storage Admin avant d’exécuter la commande suivante.

curl -sS http://127.0.0.1:7070/documents/public/help.txt

-sS masque la progression mais affiche les erreurs de connexion. Attendez-vous à Synthetic help: contact support through the portal. Enregistrez maintenant une copie locale utile avec -o, qui nomme le fichier de sortie :

curl -sS -o help.txt http://127.0.0.1:7070/documents/public/help.txt

Lisez le document local avec cat :

cat help.txt

Le même texte d’aide doit apparaître. C’est un accès public normal. Passez à l’onglet Document Portal, puis cliquez sur Open assigned document : le relevé synthétique est également accessible à l’application qui signe les requêtes. L’étape suivante sépare cet usage légitime de l’exposition anonyme.

Document Portal ouvre le relevé attribué sous l’identité de l’application

Restreindre la politique anonyme

Dans cette étape, supprimez les lectures internes anonymes tout en conservant l’aide publique.

Sélectionnez l’onglet Storage Admin dans l’interface du laboratoire pour commencer cette étape.

Demandez d’abord un relevé anonymement. -w ajoute le code HTTP ; \n insère un retour à la ligne. 200 signifie que la requête a réussi. Un vrai refus de permission est 403 avec AccessDenied ; 404 ou une erreur de connexion ne prouve pas la protection.

Passez à l’onglet Storage Admin avant d’exécuter la commande suivante.

curl -sS -w '\nHTTP %{http_code}\n' http://127.0.0.1:7070/documents/portal/statement.txt

Voir le relevé et HTTP 200 démontre la fuite. Ne le supprimez pas : le portail en a encore besoin.

AWS CLI peut appeler l’API compatible S3. source charge les identifiants administrateur préparés dans ce terminal. Ils ne concernent que cette VM de formation ; répétez cette commande dans toute nouvelle session Storage Admin.

source admin.env

Lisez la politique effective du service actif. s3api sélectionne les opérations de stockage d’objets ; --endpoint-url cible cette passerelle locale plutôt qu’AWS. --query Policy --output text affiche la chaîne JSON de la politique.

aws --endpoint-url http://127.0.0.1:7070 s3api get-bucket-policy --bucket documents --query Policy --output text

Une politique JSON contient une liste Statement. Effect: Allow autorise une opération, Principal désigne son bénéficiaire, Action l’opération et Resource les objets. s3:GetObject signifie lire un objet. Principal: "*" inclut les visiteurs anonymes. La ressource arn:aws:s3:::documents/* couvre toutes les clés ; le * final correspond à tout suffixe. L’autre déclaration autorise séparément portal-reader à accéder à portal/*.

Éditez la copie préparée avec nano :

nano policy.json

Changez uniquement le Resource de la déclaration anonyme, de arn:aws:s3:::documents/* à arn:aws:s3:::documents/public/*. Conservez la déclaration du portail nommé. JSON impose des guillemets doubles autour des chaînes et des virgules entre les champs. Enregistrez avec Ctrl+O, appuyez sur Enter, puis quittez avec Ctrl+X.

Modifier un fichier local ne change pas l’accès. Appliquez-le ; file:// indique à la CLI de lire la politique dans ce fichier :

aws --endpoint-url http://127.0.0.1:7070 s3api put-bucket-policy --bucket documents --policy file://policy.json

Une application réussie ne produit aucune sortie. Si le JSON est invalide, rouvrez l’éditeur, corrigez guillemets ou virgules et réappliquez-le. Répétez la requête anonyme du relevé : attendez AccessDenied et HTTP 403. Sans autorisation applicable, une requête est refusée par défaut. Un refus global pour tout le monde bloquerait aussi le portail légitime.

Préserver le portail et l’aide publique

Dans cette étape, prouvez que la correction conserve les lectures utiles et les documents inchangés.

Sélectionnez l’onglet Storage Admin dans l’interface du laboratoire pour commencer cette étape.

Retestez l’aide publique avec la commande anonyme de l’étape 1 : elle doit toujours renvoyer le texte original. Passez à l’onglet Document Portal. Ouvrez de nouveau Open assigned document. Attendez le relevé et Identity: portal-reader.

Pour tester directement l’identité nommée, définissez les identifiants pour cette seule commande. Les affectations en préfixe n’affectent que cette commande ; l’environnement administrateur du terminal reste donc disponible ensuite. get-object télécharge une clé dans le nom de fichier local placé à la fin :

Passez à l’onglet Storage Admin avant d’exécuter la commande suivante.

AWS_ACCESS_KEY_ID=portal-reader AWS_SECRET_ACCESS_KEY=portal-reader-secret aws --endpoint-url http://127.0.0.1:7070 s3api get-object --bucket documents --key portal/statement.txt statement.txt

La CLI affiche les métadonnées de l’objet. Lisez le document réellement téléchargé :

cat statement.txt

Attendez Synthetic statement: account 1042, balance 75 credits. Le même relevé stocké est désormais accessible par une requête nommée et refusé anonymement. Si le portail échoue, relisez la politique effective : son autorisation nommée doit rester présente, et l’autorisation anonyme doit se terminer par public/*. Rétablissez puis réappliquez la politique ; supprimer les objets ou arrêter le stockage ne satisfait pas les deux exigences.

Résumé

Vous avez distingué les requêtes anonymes des requêtes signées du portail, restreint une vraie politique de bucket et préservé l’aide publique et les relevés clients. Une correction réussie doit bloquer l’exposition tout en conservant un parcours métier fonctionnel.