# @magloft/kms

> Zero-Setup encrypted configuration library via Google Cloud KMS / Google Cloud Storage.

Latest version **3.0.4** (published 2020-01-29) · MIT license · 0 weekly downloads

## Install

```sh
npm install @magloft/kms
pnpm add @magloft/kms
yarn add @magloft/kms
bun add @magloft/kms
```

Provides the command `kms`.

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.0.4 |
| Published | 2020-01-29 |
| First published | 2018-10-24 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=v8.11.1 |
| Dependencies | 7 |
| Unpacked size | 26.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | tstrebitzer |

## Links

- npm: https://www.npmjs.com/package/@magloft/kms
- npm.io page: https://npm.io/package/@magloft/kms

## Dependencies (7)

- [yargs](https://npm.io/package/yargs.md) ^12.0.2
- [editor](https://npm.io/package/editor.md) ^1.0.0
- [fs-extra](https://npm.io/package/fs-extra.md) ^8.1.0
- [@google-cloud/kms](https://npm.io/package/@google-cloud/kms.md) ^1.6.2
- [google-auth-library](https://npm.io/package/google-auth-library.md) ^5.8.0
- [@google-cloud/storage](https://npm.io/package/@google-cloud/storage.md) ^4.3.0
- [@types/google-cloud__kms](https://npm.io/package/@types/google-cloud__kms.md) ^1.5.0

## Recent versions

- 3.0.4 (latest) — 2020-01-29
- 3.0.3 — 2020-01-28
- 3.0.2 — 2020-01-28
- 3.0.1 — 2020-01-28
- 2.0.2 — 2020-01-14
- 1.2.0 — 2020-01-14
- 1.1.1 — 2020-01-13
- 1.0.6 — 2019-03-05
- 1.0.5 — 2019-03-05
- 1.0.4 — 2019-03-05
- 1.0.3 — 2019-03-05
- 1.0.2 — 2018-11-01
- 1.0.1 — 2018-10-24

## README

# @magloft/kms

Zero-Setup encrypted configuration library via Google Cloud KMS / Google Cloud Storage.

## Features

* Configure projects in a secure, central place.
* Manage different configurations and environments.
* Keep your codebase and repositories clean of any sensitive data.

## Requirements

1. Install `gcloud` sdk
2. Login via `gcloud auth login`
3. Set your google cloud project using `gcloud config set project PROJECT_ID`

## Installation

1. `npm -g install @magloft/kms` or `yarn global add @magloft/kms`
2. `kms init`

## CLI Usage

```bash
kms [command]

Commands:
  kms init         initialize kms
  kms edit [key]   edit key and publish to kms
  kms store [key]  store key to kms
  kms fetch [key]  fetch key from kms

Options:
  -e         Set environment  [string] (development, staging, production)
  --help     Show help        [boolean]
  --version  Show version     [boolean]
```

## Node Usage

```js
const { config } = require('@magloft/kms')

config('credentials/mysql').then((result) => {
  console.log(result)
  // { host: '127.0.0.1', port: '3306', username: 'root', password: 'root' }
})
```

## Environments

By default, the `development` environment will be used. Credentials are stored locally at `~/.kms/development/path/to/key.json`.

Any environment other than `development` will load and retrieve configuration from Google Cloud Storage and encrypt/decrypt via Google Cloud KMS.

To change the environment, you can:
1. Pass the environment via CLI argument `-e production`.
2. Set the `KMS_ENV=production` environment variable

## Configuration

The `KMS_PARAMS` environment variable allows you to specift the project, storage bucket and keyring settings:

`KMS_PARAMS=magloft-private:kms:kms`

The colon-seperated string contains `Bucket Name`, `Key Ring ID` and `Crypto Key ID`.

---
_Source: https://npm.io/package/@magloft/kms · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
