Accéder au compartiment S3 à l'aide du chiffrement SSE-KMS dans l'environnement de rôle IAM EC2 (AWS SDK pour Java)

L'autre jour, j'ai participé à un événement

** "Au fait, j'ai écrit un article pour chiffrer et télécharger dans un compartiment S3, mais j'ai utilisé une clé d'accès pour m'authentifier!" ** (Pas conforme aux meilleures pratiques de sécurité)

J'ai remarqué cela, alors j'ai décidé de le compléter.

** Chiffrement des données téléchargées vers S3 à l'aide du kit AWS SDK pour Java / SSE-KMS ** est une continuation.

1. Définissez le rôle IAM pour EC2

· Dans IAM, cliquez sur ** Créer un nouveau rôle **. 01_iam1.png

-Sélectionnez ** "Amazon EC2" **. 02_iam2.png

-Cochez ** "Amazon S3 Full Access" ** et cliquez sur ** [Étape suivante] **. 03_iam3.png

-Entrez ** nom du rôle ** et cliquez sur ** [Créer un rôle] **. 04_iam4.png

-Sélectionnez la ** clé de cryptage ** utilisée pour le cryptage S3. 05_kms1.png

-Cliquez sur ** [Ajouter] ** de ** Utilisateur clé **. 06_kms2.png

-Sélectionnez le ** rôle IAM que vous avez créé ** et cliquez sur ** [Joindre] **. 07_kms3.png

-Attribuez le rôle IAM créé à ** l'instance EC2 cible **. 08_ec2_1.png

-Entrez / sélectionnez le ** nom du rôle IAM ** et cliquez sur ** Appliquer **. 09_ec2_2.png

-Si le processus réussit, démarrez (démarrez) l'instance EC2 cible et vérifiez que le rôle IAM est appliqué. 11_ec2_4.png

2. Modifications du code Java

Pour le code Java, indiquez simplement les informations d'identification.

point de changement


public class S3Access {

    private static final String ENDPOINT_URL = "https://s3-ap-northeast-1.amazonaws.com";
    private static final String REGION       = "ap-northeast-1";
//  private static final String ACCESS_KEY   = "【clé d'accès】";
//  private static final String SECRET_KEY   = "[Clef secrète]";
    private static final String KMS_KEY_ID   = "[ID de clé KMS]";

(Omission)

    //--------------------------------------------------
    //Génération de clients
    //--------------------------------------------------
    private AmazonS3 getClient(String bucketName) throws Exception {

//      //Informations d'authentification
//      AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);

        //Paramètres du client
        ClientConfiguration clientConfig = new ClientConfiguration();
        clientConfig.setProtocol(Protocol.HTTPS);  //protocole
        clientConfig.setConnectionTimeout(10000);   //Délai de connection dépassé(ms) 

        //Réglage du point final
        EndpointConfiguration endpointConfiguration = new EndpointConfiguration(ENDPOINT_URL, REGION);

        //Génération de clients
        AmazonS3 client = AmazonS3ClientBuilder.standard()
//                      .withCredentials(new AWSStaticCredentialsProvider(credentials))
                        .withClientConfiguration(clientConfig)
                        .withEndpointConfiguration(endpointConfiguration).build();

(Omission)

** Supprimez la ligne commentée avec "//" au début de la ligne **.

Recommended Posts

Accéder au compartiment S3 à l'aide du chiffrement SSE-KMS dans l'environnement de rôle IAM EC2 (AWS SDK pour Java)
J'ai essayé d'utiliser l'instruction Extended for en Java
Essayez Spark Submit to EMR à l'aide du kit AWS SDK pour Java
Importer / télécharger / supprimer en bloc des données sur S3 à l'aide d'Amazon S3 Client Builder avec AWS SDK pour Java
Comment publier une application à l'aide de la construction d'environnement d'instance AWS (3) EC2
SDK AWS pour Java 1.11.x et 2.x
Suppression d'objets AWS S3 dans Java
Dossiers renommés dans AWS S3 (Java)
Obtenir une liste de fichiers S3 avec ListObjectsV2Request (AWS SDK for Java)
[AWS SDK for Java] Définir la stratégie de nouvelle tentative pour le client S3
Utilisation de Java avec AWS Lambda-Implementation-Stop / Launch EC2
Mapper sans utiliser de tableau en java
Mise à jour de l'environnement Java de Windows à l'aide de Chocolatey
À utiliser sans préparer de fichier d'authentification lors de l'utilisation du SDK Firebase Admin dans Java