Files
teleport/lib/backend/dynamo/README.md
T
Trent Clarke e91860631e Port backend tests to testify / fix racy tests (#8170)
In order to get better visibility into the backend database tests using
the standard Go tooling, this changeset ports the backend tests away
from `Check`, and into subtests & `testify` for assertions.

This change means that individual sub-tests
 1. can be more easily identified in the json test logs, and
 2. can be more easily run individually from the command line

During this port I also discovered that some tests are using the fake
clocks incorrectly, which may be a cause of some of our flaky etcd
tests.
2021-09-10 04:14:04 -07:00

66 lines
1.7 KiB
Markdown

## DynamoDB backend implementation for Teleport.
### Introduction
This package enables Teleport auth server to store secrets in
[DynamoDB](https://aws.amazon.com/dynamodb/) on AWS.
WARNING: Using DynamoDB involves recurring charge from AWS.
The table created by the backend will provision 5/5 R/W capacity.
It should be covered by the free tier.
### Running tests
The DynamodDB tests are not run by default. To run them locally, try:
```
go test -tags dynamodb -v ./lib/backend/dynamo
```
*NOTE:* you will need to provide a AWS credentials & a default region
(e.g. in your `~/.aws/credentials` & `~/.aws/config` files, or via
environment vars) for the tests to work.
### Quick Start
Add this storage configuration in `teleport` section of the config file (by default it's `/etc/teleport.yaml`):
```yaml
teleport:
storage:
type: dynamodb
region: eu-west-1
table_name: teleport.state
access_key: XXXXXXXXXXXXXXXXXXXXX
secret_key: YYYYYYYYYYYYYYYYYYYYY
```
Replace `region` and `table_name` with your own settings. Teleport will create the table automatically.
### AWS IAM Role
You can use IAM role instead of hard coded access and secret key (IAM role is
recommended). You must apply correct policy in order to the auth to
create/get/update K/V in DynamoDB.
Example of a typical policy (change region and account ID):
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllAPIActionsOnTeleportAuth",
"Effect": "Allow",
"Action": "dynamodb:*",
"Resource": "arn:aws:dynamodb:eu-west-1:123456789012:table/prod.teleport.auth"
}
]
}
```
### Get Help
This backend has been contributed by https://github.com/apestel