Zugriff auf den S3-Bucket mithilfe der SSE-KMS-Verschlüsselung in der EC2-IAM-Rollenumgebung (AWS SDK für Java)

Neulich habe ich an einer Veranstaltung teilgenommen

** "Übrigens habe ich einen Artikel zum Verschlüsseln und Hochladen in einen S3-Bucket geschrieben, aber zur Authentifizierung einen Zugriffsschlüssel verwendet!" ** (Nicht im Einklang mit den bewährten Sicherheitsmethoden)

Ich bemerkte das und beschloss, es zu ergänzen.

** Verschlüsseln von Daten, die mit AWS SDK für Java / SSE-KMS in S3 hochgeladen wurden ** ist eine Fortsetzung.

1. Stellen Sie die IAM-Rolle für EC2 ein

· Klicken Sie in IAM auf ** Neue Rolle erstellen **. 01_iam1.png

-Wählen Sie ** "Amazon EC2" **. 02_iam2.png

-Überprüfen Sie ** "Amazon S3 Full Access" ** und klicken Sie auf ** [Nächster Schritt] **. 03_iam3.png

-Geben Sie ** Rollennamen ** ein und klicken Sie auf ** [Rolle erstellen] **. 04_iam4.png

-Klicken Sie auf ** [Hinzufügen] ** von ** Key User **. 06_kms2.png

-Geben Sie den ** IAM-Rollennamen ** ein / wählen Sie ihn aus und klicken Sie auf ** Übernehmen **. 09_ec2_2.png

-Wenn der Prozess erfolgreich ist, starten (starten) Sie die Ziel-EC2-Instanz und überprüfen Sie, ob die IAM-Rolle angewendet wird. 11_ec2_4.png

2. Änderungen des Java-Codes

Geben Sie für Java-Code einfach die Anmeldeinformationen an.

Wechselpunkt


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   = "【Zugangsschlüssel】";
//  private static final String SECRET_KEY   = "[Geheimer Schlüssel]";
    private static final String KMS_KEY_ID   = "[KMS-Schlüssel-ID]";

(Unterlassung)

    //--------------------------------------------------
    //Client-Generierung
    //--------------------------------------------------
    private AmazonS3 getClient(String bucketName) throws Exception {

//      //Authentifizierungsinformationen
//      AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);

        //Client-Einstellungen
        ClientConfiguration clientConfig = new ClientConfiguration();
        clientConfig.setProtocol(Protocol.HTTPS);  //Protokoll
        clientConfig.setConnectionTimeout(10000);   //Verbindungszeitüberschreitung(ms) 

        //Endpunkteinstellung
        EndpointConfiguration endpointConfiguration = new EndpointConfiguration(ENDPOINT_URL, REGION);

        //Client-Generierung
        AmazonS3 client = AmazonS3ClientBuilder.standard()
//                      .withCredentials(new AWSStaticCredentialsProvider(credentials))
                        .withClientConfiguration(clientConfig)
                        .withEndpointConfiguration(endpointConfiguration).build();

(Unterlassung)

** Löschen Sie die mit "//" am Zeilenanfang auskommentierte Zeile **.

Recommended Posts

Zugriff auf den S3-Bucket mithilfe der SSE-KMS-Verschlüsselung in der EC2-IAM-Rollenumgebung (AWS SDK für Java)
Ich habe versucht, die erweiterte for-Anweisung in Java zu verwenden
Versuchen Sie Spark Submit to EMR mit AWS SDK für Java
Hochladen / Herunterladen / Löschen von Daten in S3 mithilfe von Amazon S3 Client Builder mit AWS SDK für Java
So veröffentlichen Sie eine Anwendung mithilfe der AWS (3) EC2-Instanzumgebungskonstruktion
AWS SDK für Java 1.11.x und 2.x.
Löschen von AWS S3-Objekten in Java
Umbenannte Ordner in AWS S3 (Java)
Holen Sie sich eine Liste der S3-Dateien mit ListObjectsV2Request (AWS SDK für Java)
[AWS SDK für Java] Legen Sie die Wiederholungsrichtlinie für den S3-Client fest
Verwenden von Java mit AWS Lambda-Implementierung-Stop / Launch EC2
Map ohne Verwendung eines Arrays in Java
Aktualisieren der Java-Umgebung von Windows mit Chocolatey
Verwenden Sie diese Option, ohne eine Authentifizierungsdatei vorzubereiten, wenn Sie das Firebase Admin SDK in Java verwenden