aws-secrets-github-sync
v0.1.372
Published
Update GitHub repository secrets from an AWS SecretsManager secret
Downloads
1,518
Readme
aws-secrets-github-sync
Updates GitHub secrets from AWS Secrets Manager.
Beta: This project is under active development and is not recommended to use in production environments.
This utility reads a secret from AWS Secrets Manager and stores the keys from this secret to GitHub repository secrets.
It is useful to maintain a set of keys across multiple repositories, handle rotation, etc.
Install
This tool is published as an npm module, so it can be either installed locally or globally via:
npm i -g aws-secrets-github-sync
Or any other npm package manager such as yarn, pnpm, etc.
Prerequisites
- GitHub CLI, logged into your account.
- AWS credentials configured in your environment
Usage
Store your secret in AWS Secrets Manager
Use the AWS CLI or AWS Console to create a secret in AWS Secrets Manager that includes keys that map to GitHub secret names.
For example, say our AWS Secrets Manager secret looks like this:
{
"NPM_TOKEN": "<my npm token>",
"FOOBAR": "<some other secret>"
}
Updating Secrets
Now that you have a secret in AWS Secrets Manager, you can use this tool to read it and store it in your GitHub repository.
This can be either done via a config file or via the command line.
aws-secrets-github-sync -s SECRET [OPTIONS]
Options:
--help
Show help-s
,--secret
- The secret ID or ARN of the AWS Secrets Manager secret-k
,--keys
(array) - The set of keys to update. Can be invoked multiple times (e.g.-k NPM_TOKEN -k FOOBAR
). If not specified, all keys from the secret will be stored in the repository.--prune
- Will delete any secret keys from the repository that are not in AWS Secrets Manager (and not specified in--keep
). If this is not set, old keys will be retained.--keep
- Keys to keep instead of pruning (can appear multiple times).--yes
- Don't ask for user confirmation before the update.-r
,--repo
- The GitHub full repository name (e.g.cdklabs/aws-secrets-github-sync
). If this is not specified, we will try to resolve the repo from the current git settings.-R
,--region
- The AWS region to read the secret from. If this is not specified,AWS_REGION
will be used. If the secret is an ARN, we will resolve the region from the ARN.--profile
- specify AWS credentials profile to use.
You can also specify all options via a configuration file. Here's an example
secrets.json
:
{
"secret": "publishing-secrets",
"region": "us-east-1",
"prune": true,
"keys": [
"NPM_TOKEN",
"PROJEN_GITHUB_TOKEN"
],
}
And then, execute:
aws-secrets-github-sync -C secrets.json
Auditing
All AWS Secrets Manager activity is recorded in AWS
CloudTrail.
Requests from aws-secrets-github-sync are tagged with a user-agent of
aws-secrets-github-sync/$version
so it is possible to find them as needed.
Contributing
See our Contribution Guide for more information.
Security
See Security Issue Notification for more information.
License
This project is licensed under the Apache-2.0 License.