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