17.4.3 アプリケーション設定値情報のマスキング
アプリケーション設定値情報とは,Spring Bootの設定がProperties形式で出力されたファイルのことです。ファイルの出力先,およびファイルの内容については「17.3.3(1) アプリケーション設定値情報」を参照してください。アプリケーション設定値情報にはパスワードなど機密情報が入るおそれがあるため,マスキングされた状態でファイルが出力されます。
ルールは,snapshot.maskingrule.regexes.<n>に正規表現で指定します。正規表現に合致した文字列の最初のグループが「*****」に置換されます。
- デフォルトのマスキングルール
-
次のルールに合致する情報は,スナップショットログに含まれないように必ずマスキングされます。
-
password\s*[:=]\s*(.*)
-
spring\..*ur[il]s?\s*[:=]\s*(.*@.*)
-
spring\.datasource\.jndi-name\s*[:=]\s*(.*@.*)
このルールは,ユーザがマスキングルールを追加するかどうかに関係なく,必ず適用されます。
-
- 追加のマスキングルール
-
デフォルトのマスキングルールに合致しない情報を追加でマスキングしたい場合は,マスキングルールを追加してください。マスキングルールの追加方法については,「17.8.2 機密情報のマスキングルールを追加したい場合」を参照してください。
アプリケーション設定値情報のマスキングルールの注意事項を次に示します。
-
アプリケーション設定値情報は,元となるYAML形式の構成データファイル(例:application.yaml)のフォーマットのままでは出力されません。そのため,マスキングルールを追加する場合は,Properties形式のキー名を考慮する必要があります。
例えば,次のようなYAML形式のプロパティの値をマスキングしたい場合,
logging: file: name: spring.logconfig.properties(本製品の設定ファイル)中のマスキングルールは次のように定義します。
snapshot.maskingrule.regexes.1=logging\.file\.name=(.*)
-
アプリケーション設定値情報のキーの元となる情報にOS環境変数があります。OS環境変数と,構成データファイルで,同じプロパティを指す設定がある場合,それぞれの指定方法に対応したマスキングルールが必要です。
例えば,構成データファイルapplication.properteisに次のようなプロパティがある場合で,
logging.file.name=app.txt
OSの環境変数で次の指定があるとき,
LOGGING_FILE_NAME=env.log
OSの環境変数の方が優先度が高いため,resolved.propertiesは次のように出力されます※。
LOGGING_FILE_NAME=env.log logging.file.name=env.log
注※ 出力内容の一部を抜粋して記載しています。
したがって,これら2つに対応するために,config.properties(本製品の設定ファイル)中のマスキングルールは次のように定義します。
snapshot.maskingrule.regexes.1=logging\.file\.name=(.*) snapshot.maskingrule.regexes.2=LOGGING_FILE_NAME=(.*)