blob: 6489fc309d859a9f1aec20a9631475ddb6127b4e [file] [log] [blame] [view]
# Store Gerrit Secrets to AWS Secret Manager
[AWS Secret Manager](https://aws.amazon.com/secrets-manager/) is a secure way of
storing and managing secrets. These scripts make use of it to retrieve sensitive information
required to run gerrit, such as private keys and passwords.
In order to do that, such secrets must be previously uploaded to the secret manager, so that
they can be found and used during deployment.
To store the secret you can run the relevant [script](../gerrit/add_secrets_aws_secrets_manager.sh) to
upload them to AWS Secret Manager:
`./add_secrets_aws_secrets_manager.sh /path/to/your/keys/directory secret_prefix aws-region-id`
for example:
```bash
./add_secrets_aws_secrets_manager.sh /tmp/secrets secret_prefix us-east-1`
```
When `secret_prefix` is omitted, it is set to `gerrit_secret` by default.
The [script](../gerrit/add_secrets_aws_secrets_manager.sh) expects secrets to be available in a
specified directory (e.g. `/tmp/secrets`).
The expected secrets are the following.
### SSH Host Keys
The SSH keys you will need to add are the one usually created and used by Gerrit:
* ssh_host_ecdsa_384_key
* ssh_host_ecdsa_384_key.pub
* ssh_host_ecdsa_521_key
* ssh_host_ecdsa_521_key.pub
* ssh_host_ecdsa_key
* ssh_host_ecdsa_key.pub
* ssh_host_ed25519_key
* ssh_host_ed25519_key.pub
* ssh_host_rsa_key
* ssh_host_rsa_key.pub
You will have to create the keys and place them for example in `/tmp/secrets` directory,
which you can then feed to the `add_secrets_aws_secrets_manager.sh` script.
These SSH host keys are generated by gerrit during the init script, so you could copy them
from a previous installation (`etc/*key*` files), if you have one.
```bash
cp <previous_installation>/etc/*key* /tmp/secrets
```
If you don't have a previous installation of gerrit you can initialize a new gerrit and copy the
generated ones, as follows:
```bash
cd /tmp/
wget https://gerrit-releases.storage.googleapis.com/gerrit-3.2.2.war
java -jar gerrit-3.2.2.war init -d /tmp/foobar --dev --batch --no-auto-start
cp /tmp/foobar/etc/*key* /tmp/secrets
```
### Email Private Key
You will need to create a secret and put it in a file called `registerEmailPrivateKey`
in the same directory of the SSH keys (e.g. `/tmp/secrets`).
### LDAP Password
You will need to put the admin LDAP password in a file called `ldapPassword`
in the same directory of the SSH keys (e.g. `/tmp/secrets`).
### SMTP Password
You will need to put the SMTP password in a file called `smtpPassword`
in the same directory of the SSH keys (e.g. `/tmp/secrets`).
### Prometheus Bearer Token
Generate a bearer token to be used for monitoring with Prometheus:
```bash
openssl rand -hex 20 > /tmp/secrets/prometheus_bearer_token
```
### Private/public SSH key for replication (required only for recipes involving replicas)
You will also need to create private and public SSH keys used by the replication plugin to replicate
from primaries to replicas, for example:
```bash
ssh-keygen -b 2048 -m PEM -t rsa -f /tmp/secrets/replication_user_id_rsa -q -N ""
```
* replication_user_id_rsa
* replication_user_id_rsa.pub