|
1 | 1 | # AWS Database Encryption SDK for DynamoDB
|
2 | 2 |
|
3 |
| -📣 Note: This repository contains the source code and related files for all |
4 |
| -language implementations of the AWS Database Encryption SDK for DynamoDB. |
5 |
| -See our [supported languages](#supported-languages) section for more information. |
| 3 | +AWS Database Encryption SDK for DynamoDB |
6 | 4 |
|
7 |
| -The AWS Database Encryption SDK (DB-ESDK) for DynamoDB is a client-side encryption |
8 |
| -library that allows you to perform attribute-level encryption, enabling you to encrypt specific |
9 |
| -attribute values within items before storing them in your DynamoDB table. All encryption and |
10 |
| -decryption are performed within your application. This lets you protect sensitive data in-transit |
11 |
| -and at-rest, as data cannot be exposed unless decrypted by your application. |
| 5 | +## Using the AWS Database Encryption SDK for DynamoDB for Rust |
12 | 6 |
|
13 |
| -For more details about the design and architecture of the DB-ESDK for DynamoDB, |
14 |
| -see the [AWS Database Encryption SDK Developer Guide](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/). |
| 7 | +The AWS Database Encryption SDK for DynamoDB is available on [Crates.io](https://www.crates.io/). |
15 | 8 |
|
16 |
| -# Security |
| 9 | +## Building the AWS Database Encryption SDK for DynamoDB |
17 | 10 |
|
18 |
| -If you discover a potential security issue in this project |
19 |
| -we ask that you notify AWS/Amazon Security via our |
20 |
| -[vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). |
21 |
| -Please **do not** create a public GitHub issue. |
| 11 | +To build, the AWS Database Encryption SDK for DynamoDB requires the most up to date version of [Dafny](https://github.com/dafny-lang/dafny) on your PATH. |
22 | 12 |
|
23 |
| -# Support Policy |
| 13 | +You will also need to ensure that you fetch all submodules using either `git clone --recursive ...` when cloning the repository or `git submodule update --init` on an existing clone. |
24 | 14 |
|
25 |
| -See [Support Policy](./SUPPORT_POLICY.rst) for details |
26 |
| -on the current support status of all major versions of this library. |
| 15 | +To setup your project to use the AWS Database Encryption SDK for DynamoDB in Rust, run: |
27 | 16 |
|
28 |
| -## Giving Feedback |
| 17 | +``` |
| 18 | +cd DynamoDbEncryption |
| 19 | +# Polymorph smithy to Rust |
| 20 | +make polymorph_rust |
| 21 | +# Transpile Dafny to Rust |
| 22 | +make transpile_rust |
| 23 | +# Build Project |
| 24 | +cd runtimes/rust |
| 25 | +cargo build |
| 26 | +``` |
29 | 27 |
|
30 |
| -We need your help in making this SDK great. |
31 |
| -Please participate in the community and contribute to this effort by |
32 |
| -submitting issues, |
33 |
| -participating in discussion forums and |
34 |
| -submitting pull requests through the following channels: |
| 28 | +### (Optional) Set up the AWS Database Encryption SDK for DynamoDB to work with AWS KMS |
35 | 29 |
|
36 |
| -- Submit [issues](https://github.com/aws/aws-database-encryption-sdk-dynamodb-java/issues) |
37 |
| - \- this is the **preferred** channel to interact with our team |
38 |
| -- Articulate your |
39 |
| - [feature request](https://github.com/aws/aws-database-encryption-sdk-dynamodb-java/issues?q=is%3Aopen+is%3Aissue+label%3A%22feature-request%22) |
40 |
| - or upvote existing ones |
41 |
| -- Ask [questions](https://repost.aws/tags/TAc3VKZnkNQyimpHnCHetNOQ/aws-crypto-tools) on AWS re:Post under AWS Crypto Tools tag |
| 30 | +If you set up the AWS Database Encryption SDK for DynamoDB to use the AWS KMS Keyring, |
| 31 | +the AWS Database Encryption SDK for DynamoDB will make calls to AWS KMS on your behalf, |
| 32 | +using the appropriate AWS SDK. |
42 | 33 |
|
43 |
| -# Getting Started |
| 34 | +However, you must first set up AWS credentials for use with the AWS SDK. |
44 | 35 |
|
45 |
| -### Repository structure |
| 36 | +## Testing the AWS Database Encryption SDK for DynamoDB for Rust |
46 | 37 |
|
47 |
| -This repository is a top level repository which houses all source code in order to compile this library into |
48 |
| -different runtimes. |
| 38 | +### Configure AWS credentials |
49 | 39 |
|
50 |
| -This library is written in Dafny, a formally verifiable programming language that can be compiled into |
51 |
| -different runtimes. This library is currently **ONLY** supported in Java and .NET |
| 40 | +To run the test suite you must first set up AWS credentials for use with the AWS SDK. |
| 41 | +This is required in order to run the integration tests, which use a KMS Keyring against a publicly accessible KMS CMK. |
52 | 42 |
|
53 |
| -### AWS Integration |
| 43 | +### Run the tests |
54 | 44 |
|
55 |
| -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. |
| 45 | +Run the test suite with: |
56 | 46 |
|
57 |
| -- **To create an AWS account**, go to |
58 |
| - [Sign In or Create an AWS Account](https://portal.aws.amazon.com/gp/aws/developer/registration/index.html) |
59 |
| - and then choose **I am a new user.** |
60 |
| - Follow the instructions to create an AWS account. |
| 47 | +``` |
| 48 | +cd AwsEncryptionSDK |
| 49 | +make test_rust |
| 50 | +``` |
61 | 51 |
|
62 |
| -- **(Optional) To create a key in AWS KMS**, see |
63 |
| - [Creating Keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html). |
| 52 | +Run tests on examples, to ensure they are up to date: |
64 | 53 |
|
65 |
| -## Supported Languages |
| 54 | +``` |
| 55 | +cd AwsEncryptionSDK/runtimes/rust/ |
| 56 | +cargo test --examples |
| 57 | +``` |
66 | 58 |
|
67 |
| -- Java |
68 |
| -- .NET |
69 |
| -- Dafny |
| 59 | +Please look at the Examples on how to use the Encryption SDK in Rust [here](examples). |
70 | 60 |
|
71 |
| -# Contributing |
| 61 | +Please note that tests and test vectors require internet access and valid AWS credentials, since calls to KMS are made as part of the test workflow. |
72 | 62 |
|
73 |
| -See [CONTRIBUTING](CONTRIBUTING.md) for more information. |
| 63 | +## License |
74 | 64 |
|
75 |
| -# License |
| 65 | +This library is licensed under the Apache 2.0 License. |
76 | 66 |
|
77 |
| -This project is licensed under the Apache-2.0 License. |
78 |
| - |
79 |
| -[ddbenhanced]: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/dynamodb-enhanced-client.html |
0 commit comments