Azure Storage Blobs Cryptography-Clientbibliothek für Java– Version 12.23.1
Azure Blob Storage ist die Objektspeicherlösung von Microsoft für die Cloud. Blob Storage ist für die Speicherung großer Mengen unstrukturierter Daten optimiert. Unstrukturierte Daten sind Daten, die keinem bestimmten Datenmodell und keiner bestimmten Definition entsprechen (also beispielsweise Text- oder Binärdaten). Dieses Paket unterstützt die clientseitige Verschlüsselung für Blobspeicher.
Quellcode | API-Referenzdokumentation | REST-API-Dokumentation | Produktdokumentation | Proben
Erste Schritte
Voraussetzungen
- Java Development Kit (JDK) mit Version 8 oder höher
- Azure-Abonnement
- Speicherkonto erstellen
Einschließen des Pakets
BOM-Datei einfügen
Fügen Sie azure-sdk-bom in Ihr Projekt ein, um von der GA-Version der Bibliothek abhängig zu sein. Ersetzen Sie im folgenden Codeausschnitt den Platzhalter {bom_version_to_target} durch die Versionsnummer. Weitere Informationen zur BOM finden Sie in der INFODATEI FÜR AZURE SDK-STÜCKLISTEN.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-sdk-bom</artifactId>
<version>{bom_version_to_target}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
und fügen Sie dann die direkte Abhängigkeit ohne Versions-Tag in den Abschnitt „Abhängigkeit“ ein.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob-cryptography</artifactId>
</dependency>
</dependencies>
Direkte Abhängigkeiten einfügen
Wenn Sie eine Abhängigkeit von einer bestimmten Version der Bibliothek annehmen möchten, die nicht in der BoM vorhanden ist, fügen Sie die direkte Abhängigkeit wie folgt zu Ihrem Projekt hinzu.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob-cryptography</artifactId>
<version>12.23.1</version>
</dependency>
Erstellen eines Speicherkontos
Zum Erstellen eines Speicherkontos können Sie das Azure-Portal oder die Azure CLI verwenden.
az storage account create \
--resource-group <resource-group-name> \
--name <storage-account-name> \
--location <location>
Authentifizieren des Clients
Um mit dem Speicherdienst (Blob, Queue, Message, MessageId, File) zu interagieren, müssen Sie eine instance der Service Client-Klasse erstellen. Um dies zu ermöglichen, benötigen Sie die Konto-SAS-Zeichenfolge (Shared Access Signature) des Speicherkontos. Weitere Informationen finden Sie unter SAS-Token.
Abrufen von Anmeldeinformationen
- SAS-Token
a. Verwenden Sie den folgenden Azure CLI-Codeausschnitt, um das SAS-Token aus dem Speicherkonto abzurufen.
az storage blob generate-sas \
--account-name {Storage Account name} \
--container-name {container name} \
--name {blob name} \
--permissions {permissions to grant} \
--expiry {datetime to expire the SAS token} \
--services {storage services the SAS allows} \
--resource-types {resource types the SAS allows}
Beispiel:
CONNECTION_STRING=<connection-string>
az storage blob generate-sas \
--account-name MyStorageAccount \
--container-name MyContainer \
--name MyBlob \
--permissions racdw \
--expiry 2020-06-15
b. Alternativ können Sie das Konto-SAS-Token aus dem Azure-Portal abrufen.
- Wechseln zu Ihrem Speicherkonto
- Wählen Sie
Shared access signature
aus dem Menü auf der linken Seite aus. - Klicken Sie auf
Generate SAS and connection string
(nach dem Setup)
Anmeldeinformationen für gemeinsam genutzte Schlüssel
a. Verwenden Sie Kontoname und Kontoschlüssel. Kontoname ist Ihr Speicherkontoname.
- Wechseln zu Ihrem Speicherkonto
- Wählen Sie
Access keys
aus dem Menü auf der linken Seite aus. - Kopieren Sie unter
key1
/key2
den Inhalt desKey
Felds.
oder
b. Verwenden Sie die Verbindungszeichenfolge.
- Wechseln zu Ihrem Speicherkonto
- Wählen Sie
Access keys
aus dem Menü auf der linken Seite aus. - Kopieren Sie unter
key1
/key2
den Inhalt desConnection string
Felds.
Wichtige Begriffe
Blobspeicher ist für Folgendes konzipiert:
- Speichern von Bildern oder Dokumenten direkt für einen Browser
- Speichern von Dateien für verteilten Zugriff
- Video- und Audio-Streaming
- Schreiben in Protokolldateien
- Speichern von Daten für Sicherung und Wiederherstellung, Notfallwiederherstellung und Archivierung
- Speichern von Daten für Analysen durch einen lokalen oder von Azure gehosteten Dienst
Beispiele
Hinweis: Die Verwendung von EncryptedBlobClient
ist identisch mit der äquivalenten BlobClient
. Der einzige Unterschied besteht in der Clientkonstruktion.
Informationen zu azure-storage-blob
häufigen Anwendungsfällen finden Sie unter BlobClient
Die folgenden Abschnitte enthalten mehrere Codeausschnitte, die einige der häufigsten Azure Storage-Blobkryptografieerstellungsaufgaben behandeln, einschließlich:
- Erstellen eines
EncryptedBlobClient
aus einemBlobClient
- Erstellen einer
EncryptedBlobClient
- Verwenden eines
LocalKeyEncryptionKey
- Verwenden eines
KeyVaultKey
Erstellen eines EncryptedBlobClient
aus einem BlobClient
Erstellen Sie mithilfe von EncryptedBlobClient
BlobClient
. BlobClient
Die Konstruktion wird in der azure-storage-blob
INFO-DATEI erläutert.
EncryptedBlobClient client = new EncryptedBlobClientBuilder()
.key(key, keyWrapAlgorithm)
.keyResolver(keyResolver)
.blobClient(blobClient)
.buildEncryptedBlobClient();
Erstellen Sie einen EncryptedBlobClient
.
Erstellen Sie mithilfe eines BlobServiceClient
Verbindungszeichenfolge.
EncryptedBlobClient client = new EncryptedBlobClientBuilder()
.key(key, keyWrapAlgorithm)
.keyResolver(keyResolver)
.connectionString(connectionString)
.containerName(containerName)
.blobName(blobName)
.buildEncryptedBlobClient();
Verwenden eines lokalen KeyEncryptionKey
JsonWebKey localKey = JsonWebKey.fromAes(new SecretKeySpec(keyBytes, secretKeyAlgorithm),
Arrays.asList(KeyOperation.WRAP_KEY, KeyOperation.UNWRAP_KEY))
.setId("my-id");
AsyncKeyEncryptionKey akek = new KeyEncryptionKeyClientBuilder()
.buildAsyncKeyEncryptionKey(localKey).block();
EncryptedBlobClient client = new EncryptedBlobClientBuilder()
.key(akek, keyWrapAlgorithm)
.connectionString(connectionString)
.containerName(containerName)
.blobName(blobName)
.buildEncryptedBlobClient();
Verwenden eines KeyVaultKey
KeyClient keyClient = new KeyClientBuilder()
.vaultUrl(keyVaultUrl)
.credential(tokenCredential)
.buildClient();
KeyVaultKey rsaKey = keyClient.createRsaKey(new CreateRsaKeyOptions(keyName)
.setExpiresOn(OffsetDateTime.now().plusYears(1))
.setKeySize(2048));
AsyncKeyEncryptionKey akek = new KeyEncryptionKeyClientBuilder()
.credential(tokenCredential)
.buildAsyncKeyEncryptionKey(rsaKey.getId())
.block();
EncryptedBlobClient client = new EncryptedBlobClientBuilder()
.key(akek, keyWrapAlgorithm)
.connectionString(connectionString)
.containerName(containerName)
.blobName(blobName)
.buildEncryptedBlobClient();
Problembehandlung
Bei der Interaktion mit Blobs mithilfe dieser Java-Clientbibliothek entsprechen vom Dienst zurückgegebene Fehler denselben HTTP-status Codes, die für REST-API-Anforderungen zurückgegeben werden. Wenn Sie beispielsweise versuchen, einen Container oder Blob abzurufen, der in Ihrem Speicherkonto nicht vorhanden ist, wird ein 404
Fehler zurückgegeben, der angibt Not Found
.
HTTP-Standardclient
Alle Clientbibliotheken verwenden standardmäßig den Netty-HTTP-Client. Durch Hinzufügen der obigen Abhängigkeit wird die Clientbibliothek automatisch für die Verwendung des Netty-HTTP-Clients konfiguriert. Das Konfigurieren oder Ändern des HTTP-Clients wird detailliert im Wiki zu HTTP-Clients beschrieben.
SSL-Standardbibliothek
Alle Clientbibliotheken verwenden standardmäßig die Tomcat-native Boring-SSL-Bibliothek, um die Leistung auf nativer Ebene für SSL-Vorgänge zu ermöglichen. Die Boring-SSL-Bibliothek ist eine Uber-JAR-Datei mit nativen Bibliotheken für Linux/macOS/Windows und bietet im Vergleich zur SSL-Standardimplementierung im JDK eine bessere Leistung. Weitere Informationen, einschließlich zur Reduzierung der Abhängigkeitsgröße, finden Sie im Abschnitt Leistungsoptimierung des Wikis.
Nächste Schritte
Mitwirken
Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.
Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys ausführen, die unsere CLA verwenden.
Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.