Parameters¶
ここではRISKENの各サービスのパラメータについて説明します
Service Parameters¶
AWS Parameter Storeをサポートしています¶
RISKENではアプリケーション実行時に安全にパラメータを渡すためにAWSのParameter Storeをサポートしています
Parameter Storeを利用することで以下のメリットがあります
- ソースコードにクレデンシャルを保存しなくて済む
- KMSによる暗号化/利用時に復号化(Envelope Encryption)
- クレデンシャルの「保存(暗号化)」と「利用(復号化)」の権限分離
- クレデンシャル操作の監査ログが残せる
- クレデンシャルを保存する場合は、
Secret String
を指定してください - 詳細は公式ドキュメント をご確認ください
仕組み・利用方法¶
各コンテナ実行時のエントリポイントでenv-injector を実行しています
- env-injectorにParameter Storeの保存先を指定する(
ENV_INJECTOR_PATH
やENV_INJECTOR_META_CONFIG
で指定)ことで、登録済みの値を環境変数としてコンテナにロードできます - Parameter Storeではなく、SecretsManagerを利用する場合は
ENV_INJECTOR_SECRET_NAME
を指定してください - 詳細はenv-injector のREADME.mdをご確認ください
Parameter Store 設定例¶
- 例えば、findingサービスに以下の環境変数(
ENV_INJECTOR_META_CONFIG
)を指定します- ENV_INJECTOR_META_CONFIG: /prd/meta/core/finding
- Pathは
/{env}/meta/{name_space}/{service_name}
のフォーマットで指定しています{env}
部分はシステム環境の識別子を想定しています{name_space}
部分はRISKENの各NameSpaceです{service_name}
部分はRISKENのサービス名です
- Pathは
- コンテナ実行時に上記1で指定されたParameter Storeが読み込まれます
/prd/meta/core/finding
には以下の値がyaml形式で保存されているとします- parameter_store_path: /prd/common - parameter_store_path: /prd/core/finding
- 上記3で指定した
parameter_store_path
が順番に読み込まれます- 最初に
/prd/common/
のParameter Storeのパスが参照されます/prd/common/
配下のパスに以下のパラメータが登録されているとします- /prd/common/DB_HOST - /prd/common/DB_USER - /prd/common/DB_PASSWORD
- 環境変数としてコンテナに以下の値がロードされます
- DB_HOST: localhost - DB_USER: hoge - DB_PASSWORD: moge
- 次に
/prd/core/finding
のParameter Storeのパスが参照されます/prd/core/finding/
配下のパスに以下のパラメータが登録されているとします- /prd/core/finding/SERVICE_ADDRESS - /prd/core/finding/ENABLE_DEBUG_LOG
- 環境変数としてコンテナに以下の値がロードされます
- SERVICE_ADDRESS: localhost - ENABLE_DEBUG_LOG: true
- 最初に
- 最終的にコンテナにロードされる環境変数は以下になります
- DB_HOST: localhost - DB_USER: hoge - DB_PASSWORD: moge - SERVICE_ADDRESS: localhost - ENABLE_DEBUG_LOG: true