Comment créer une page de manuel sous Linux
4 août 2020
Vos AirPods ou AirPods Pro sont-ils étanches?
4 août 2020

Logo AWS

Si vous souhaitez autoriser les serveurs de votre réseau à accéder aux compartiments S3 internes, sans ouvrir les objets qu'ils contiennent à Internet, la mise en liste blanche avec une stratégie de compartiment est une solution simple pour permettre le téléchargement de fichiers à partir d'un compartiment interne.

Accéder à un compartiment S3 sur Internet

La méthode la plus idéale pour l'interfaçage avec S3 à partir de Linux consiste simplement à installer l'AWS CLI et à exécuter des commandes telles que get-object pour récupérer des fichiers directement, ou utilisez l'API ou le SDK pour la langue de votre choix. Si vous utilisez EC2, il est assez simple de mettre à jour le rôle IAM de l'instance EC2 et d'associer une stratégie lui donnant accès au bucket. Tant que l'AWS CLI est installée, vous pouvez l'utiliser avec le rôle d'instance sans gérer les clés.

Toutefois, si vous n'accédez pas à S3 depuis EC2 ou depuis une autre ressource AWS pouvant assumer un rôle, vous devrez gérer les clés. L'AWS CLI aura besoin d'un ID et d'un secret pour s'authentifier, ce qui, selon la complexité de votre déploiement, peut être un problème. Vous pourriez être tenté de le coder en dur dans votre script de compilation, mais c'est une solution compliquée que nous ne conseillons pas. Vous pouvez simplement définir le bucket ou l'objet comme public, mais cela ne fonctionnera pas pour les données sensibles que vous ne voulez pas que d'autres téléchargent.

La meilleure option consiste alors simplement à ajouter des adresses IP à la liste blanche. Cela gère l'accès implicitement – si la demande provient de l'adresse IP de votre serveur, elle sera autorisée. Cela peut être utilisé pour permettre très facilement de télécharger des fichiers à partir de leur URL de point de terminaison, comme si le bucket s'exécutait dans un sous-réseau privé (bien qu'il passe toujours sur Internet).

https://s3.amazonaws.com/bucketname/object.zip

Cependant, sans politique de compartiment, vous obtiendrez une erreur 403. Accédez aux paramètres du compartiment et recherchez l'éditeur de stratégie de compartiment sous Autorisations> Stratégie de compartiment.

Recherchez l'éditeur de stratégie de compartiment sous Autorisations> Stratégie de compartiment. "Width =" 700 "height =" 358 "src =" / pagespeed_static / 1.JiBnMqyl6S.gif "onload =" pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); "onerror =" this .onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); "/></p>
<p>Entrez la stratégie suivante, en remplaçant les adresses IP et le nom du compartiment par les vôtres:</p>
<pre>{
"Version": "17/10/2012",
"Id": "S3PolicyId1",
"Déclaration": (
{
"Sid": "IPAllow",
"Effet": "Autoriser",
"Principal": "*",
"Action": (
"s3: GetObject"
),
"Resource": "arn: aws: s3 ::: bucketname / *",
"État": {
"Adresse IP": {
"aws: SourceIp": (
"192.168.1.1",
"192.168.1.2",
«192.168.1.3»
)
}
}
}
)
}</pre>
<p>Cela permet simplement le téléchargement de fichiers à partir du bucket (GetObject). Si vous souhaitez activer d'autres actions d'API, vous pouvez le définir sur quelque chose de spécifique avec <a href=Générateur de règles de compartiment AWS, ou autorisez chaque action sur le bucket avec un joker (probablement une mauvaise idée):

{
    "Version": "17/10/2012",
    "Id": "S3PolicyId1",
    "Déclaration": (
        {
            "Sid": "IPAllow",
            "Effet": "Autoriser",
            "Principal": "*",
            "Action": "s3: *",
            "Resource": "arn: aws: s3 ::: bucketname / *",
            "État": {
                "Adresse IP": {
                    "aws: SourceIp": (
                        "192.168.1.1",
                        "192.168.1.2",
                        «192.168.1.3»
                    )
                }
            }
        }
    )
}
//]]>