|
1 |
| -## DynamoDB Encryption Client for Dafny |
| 1 | +# AWS Database Encryption SDK for DynamoDB in Java |
2 | 2 |
|
3 |
| -TODO landing page info for the DDBEC. |
| 3 | +The AWS Database Encryption SDK (DB-ESDK) for DynamoDB in Java is a client-side encryption |
| 4 | +library that allows you to perform attribute-level encryption, enabling you to encrypt specific |
| 5 | +attribute values within items before storing them in your DynamoDB table. All encryption and |
| 6 | +decryption are performed within your application. This lets you protect sensitive data in-transit |
| 7 | +and at-rest, as data cannot be exposed unless decrypted by your application. |
4 | 8 |
|
5 |
| -### Development |
| 9 | +For more details about the design and architecture of the DB-ESDK for DynamoDB, |
| 10 | +see the [AWS Database Encryption SDK Developer Guide](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/). |
6 | 11 |
|
7 |
| -This repo contains several projects: |
8 |
| -- DynamoDbEncryption: Contains the implementation of the DynamoDb Encryption Client in all target languages |
9 |
| -- TODO test vectors |
10 |
| -- TODO examples |
| 12 | +# Security |
| 13 | +If you discover a potential security issue in this project |
| 14 | +we ask that you notify AWS/Amazon Security via our |
| 15 | +[vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). |
| 16 | +Please **do not** create a public GitHub issue. |
11 | 17 |
|
12 |
| -A specification of all these projects exists at `specification`. |
| 18 | +# Support Policy |
| 19 | +See [Support Policy](./SUPPORT_POLICY.rst) for details |
| 20 | +on the current support status of all major versions of this library. |
13 | 21 |
|
14 |
| -## Security |
| 22 | +## Giving Feedback |
| 23 | +We need your help in making this SDK great. |
| 24 | +Please participate in the community and contribute to this effort by |
| 25 | +submitting issues, |
| 26 | +participating in discussion forums and |
| 27 | +submitting pull requests through the following channels: |
15 | 28 |
|
16 |
| -See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information. |
| 29 | +* Submit [issues](https://github.com/aws/aws-database-encryption-sdk-dynamodb-java/issues) |
| 30 | + \- this is the **preferred** channel to interact with our team |
| 31 | +* Articulate your |
| 32 | + [feature request](https://github.com/aws/aws-database-encryption-sdk-dynamodb-java/issues?q=is%3Aopen+is%3Aissue+label%3A%22feature-request%22) |
| 33 | + or upvote existing ones |
| 34 | +* Ask [questions](https://repost.aws/tags/TAc3VKZnkNQyimpHnCHetNOQ/aws-crypto-tools) on AWS re:Post under AWS Crypto Tools tag |
17 | 35 |
|
18 |
| -## License |
| 36 | +# Getting Started |
| 37 | + |
| 38 | +## Required Prerequisites |
| 39 | +To use the DB-ESDK for DynamoDB in Java, you must have: |
| 40 | + |
| 41 | +* **A Java 8 or newer development environment** |
| 42 | + If you do not have one, |
| 43 | + go to [Java SE Downloads](https://www.oracle.com/technetwork/java/javase/downloads/index.html) on the Oracle website, |
| 44 | + then download and install the Java SE Development Kit (JDK). |
| 45 | + Java 8 or higher is required. |
| 46 | + |
| 47 | + **Note:** If you use the Oracle JDK, |
| 48 | + you must also download and install |
| 49 | + the [Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files](http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html). |
| 50 | + |
| 51 | +* **Declare a Dependency on the DB-ESDK for DynamoDB in Java and it's dependencies** |
| 52 | + This library requires the DynamoDB client |
| 53 | + from the AWS SDK for Java V2 |
| 54 | + and the AwsCryptographicMaterialProviders library. |
| 55 | + |
| 56 | + The KMS and DynamoDB-Enhanced Clients from the AWS SDK For Java V2 |
| 57 | + are **optional** dependencies. |
| 58 | + |
| 59 | + * **Via Gradle Kotlin** |
| 60 | + In a Gradle Java Project, add the following to the _dependencies_ section: |
| 61 | + ```kotlin |
| 62 | + implementation("software.amazon.cryptography:aws-database-encryption-sdk-dynamodb:3.0.0") |
| 63 | + implementation("software.amazon.cryptography:aws-cryptographic-material-providers:1.0.0") |
| 64 | + implementation(platform("software.amazon.awssdk:bom:2.19.1")) |
| 65 | + implementation("software.amazon.awssdk:dynamodb-enhanced") |
| 66 | + // The following are optional: |
| 67 | + implementation("software.amazon.awssdk:dynamodb") |
| 68 | + implementation("software.amazon.awssdk:kms") |
| 69 | + ``` |
| 70 | + |
| 71 | + * **Via Apache Maven** |
| 72 | + Add the following to your project's `pom.xml`. |
| 73 | + ```xml |
| 74 | + <project> |
| 75 | + ... |
| 76 | + <dependencyManagement> |
| 77 | + <dependencies> |
| 78 | + <dependency> |
| 79 | + <groupId>software.amazon.awssdk</groupId> |
| 80 | + <artifactId>bom</artifactId> |
| 81 | + <version>2.19.1</version> |
| 82 | + <type>pom</type> |
| 83 | + <scope>import</scope> |
| 84 | + </dependency> |
| 85 | + </dependencies> |
| 86 | + </dependencyManagement> |
| 87 | + <dependencies> |
| 88 | + <dependency> |
| 89 | + <groupId>software.amazon.awssdk</groupId> |
| 90 | + <artifactId>dynamodb-enhanced</artifactId> |
| 91 | + </dependency> |
| 92 | + <dependency> |
| 93 | + <groupId>software.amazon.cryptography</groupId> |
| 94 | + <artifactId>aws-database-encryption-sdk-dynamodb</artifactId> |
| 95 | + <version>3.0.0</version> |
| 96 | + </dependency> |
| 97 | + <dependency> |
| 98 | + <groupId>software.amazon.cryptography</groupId> |
| 99 | + <artifactId>aws-cryptographic-material-providers</artifactId> |
| 100 | + <version>1.0.0</version> |
| 101 | + </dependency> |
| 102 | + <!-- The following are optional --> |
| 103 | + <dependency> |
| 104 | + <groupId>software.amazon.awssdk</groupId> |
| 105 | + <artifactId>dynamodb</artifactId> |
| 106 | + </dependency> |
| 107 | + <dependency> |
| 108 | + <groupId>software.amazon.awssdk</groupId> |
| 109 | + <artifactId>kms</artifactId> |
| 110 | + </dependency> |
| 111 | + </dependencies> |
| 112 | + ... |
| 113 | + </project> |
| 114 | + ``` |
| 115 | + |
| 116 | +### AWS Integration |
| 117 | +You need an Amazon Web Services (AWS) account to use the DB-ESDK for DynamoDB as it's specifically designed to work with Amazon DynamoDB. Optionally, you can use AWS Key Management Service (AWS KMS) as your main keyring provider. |
| 118 | + |
| 119 | +* **To create an AWS account**, go to |
| 120 | + [Sign In or Create an AWS Account](https://portal.aws.amazon.com/gp/aws/developer/registration/index.html) |
| 121 | + and then choose **I am a new user.** |
| 122 | + Follow the instructions to create an AWS account. |
| 123 | + |
| 124 | +* **(Optional) To create a key in AWS KMS**, see |
| 125 | + [Creating Keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html). |
| 126 | + |
| 127 | +### Amazon Corretto Crypto Provider |
| 128 | +Many developers find that the Amazon Corretto Crypto Provider (ACCP) |
| 129 | +significantly improves the performance of the library. |
| 130 | +For help installing and using ACCP, see the |
| 131 | +[amazon-corretto-crypto-provider repository](https://github.com/corretto/amazon-corretto-crypto-provider). |
| 132 | + |
| 133 | +## Using the DB-ESDK for DynamoDB in Java |
| 134 | +There are several ways to use the library. |
| 135 | +More details are provided in the |
| 136 | +[AWS Database Encryption SDK Developer Guide](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/). |
| 137 | +Also see the [Examples](Examples/runtimes/java/DynamoDbEncryption). |
| 138 | + |
| 139 | +# Contributing |
| 140 | + |
| 141 | +See [CONTRIBUTING](CONTRIBUTING.md) for more information. |
| 142 | + |
| 143 | +# License |
19 | 144 |
|
20 | 145 | This project is licensed under the Apache-2.0 License.
|
| 146 | + |
| 147 | +[ddbenhanced]: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/dynamodb-enhanced-client.html |
0 commit comments