パラメータ設定:資格情報をシステム環境変数に登録する
## 概要
データベースへの接続文字列などの資格情報を記載したパラメータファイルがアクセス権設定不備などのミスから流出しても資格情報の漏洩を防ぐセキュリティの観点より、OSのシステム環境変数から資格情報を取得する機能がver.1.2.21.0より追加されました。資格情報をシステム環境変数に登録する手順について説明します。
## システム環境変数に登録できる資格情報
### [Rds.json](/ja/manual/rds-json)
データベースの接続文字列を設定できます。
|パラメータ|設定内容|
|---|---|
|SaConnectionString|データベースインスタンスにsa権限で接続するための接続文字列|
|OwnerConnectionString|Pleasanterのデータベースにdbowner権限で接続するための接続文字列を指定|
|UserConnectionString|Pleasanterのデータベースにdbreader,dbwriter権限で接続するための接続文字列を指定|
### [Mail.json](/ja/manual/mail.json)
SMTP認証の情報を設定できます。
|パラメータ|設定内容|
|---|---|
|SmtpUserName|SMTP-AUTHのユーザ名を指定|
|SmtpPassword|SMTP-AUTHのパスワードを指定|
### [Security.json](/ja/manual/security-json)
AspNetCoreDataProtectionの設定に関するパラメータをシステム環境変数に設定できます。
|パラメータ|設定内容|
|---|---|
|BlobContainerUri|データ保護キーを永続化するBlobコンテナのURLを指定|
|KeyIdentifier|データ保護キーを保護するための暗号化キーを管理するAzure Key Vaultのキー識別子を指定|
|XmlAesKey|データ保護キーを保護するための暗号化キーを生成するための文字列を指定|
### [Service.json](/ja/manual/service-json)
プリザンターのインストール環境を区別する文字列を設定できます。
|パラメータ|設定内容|
|---|---|
|DeploymentEnvironment|プリザンターがインストールされている環境(本番環境、ステージング環境など)を区別するための文字列を指定|
### [Kvs.json](/ja/manual/kvs-json)
セッションデータの接続文字列を設定できます。
|パラメータ|設定内容|
|---|---|
|ConnectionStringForSession|セッションデータに接続するためのセッションの接続文字列を指定|
## システム環境変数の命名ルール
システム環境変数へ登録する際の変数名は以下の命名ルールに従ってください。詳細は各パラメータのマニュアルを参照ください。
```
{サービス名}_{パラメータファイル名}_{パラメータ名}
```
1. サービス名
[Service.json](/ja/manual/service-json)の「EnvironmentName」または「Name」を指定します。優先順は「EnvironmentName」→「Name」です。
2. パラメータファイル名
パラメータファイル名を指定します。データベース接続文字列をシステム環境変数に登録する場合は「Rds」と指定します。
3. パラメータ名
システム環境変数に登録したいパラメータ名を指定します。
※データベース接続文字列はデータベース種類もシステム環境変数名に指定できます。詳細は[Rds.json](/ja/manual/rds-json)を参照ください。
## パラメータの優先順
パラメータファイルとシステム環境の両方に設定した場合の優先順は以下のとおりです。詳細は各パラメータのマニュアルを参照ください。
|優先順|設定値|
|---|---|
|1|パラメータファイルの設定値|
|2|システム環境変数の「{サービス名(EnvironmentName)}\_{パラメータファイル名}\_{パラメータ名}」|
|3|システム環境変数の「{サービス名(Name)}\_{パラメータファイル名}\_{パラメータ名}」|
※データベース接続文字列はデータベース種類も加味した優先順となります。詳細は[Rds.json](/ja/manual/rds-json)を参照ください。
## システム環境変数に登録する場合の注意点
資格情報をシステム環境変数に登録する場合は、パラメータファイルでは「null」を設定してください。上述の優先順の通り、パラメータファイル、システム環境変数両方に設定するとパラメータファイルの内容が優先されます。
## システム環境変数の登録方法
### 1. App Service
1. Azure Portalに接続し、作成済みのApp Serviceインスタンスを選択します。
1. 左側のメニューの「設定」-「環境変数」をクリックします。
1. 「アプリ設定」タブの「+追加」ボタンをクリックします。
1. 登録するしたい資格情報の「名前」と「値」を入力し、「適用」ボタンをクリックします。
### 2. Windows
1. スタートメニューから「システム環境変数の編集」を検索し、起動します。
1. 「システムのプロパティ」ダイアログ「詳細設定」タブの「環境変数」ボタンをクリックします。
1. 「環境変数」ダイアログの「システム環境変数」の「新規」ボタンをクリックします。
1. 「新しいシステム変数」ダイアログにて登録するしたい資格情報の「変数名」と「変数値」を入力し、「OK」ボタンをクリックします。
1. 「環境変数」ダイアログの「OK」ボタンをクリックし、「システムのプロパティ」ダイアログの「OK」ボタンをクリックします。
### 3. Linux
**Linuxの/etc/profileにシステム環境変数を設定する場合、システム環境変数名に「.(ドット)」が含まれる場合にエラーになる場合があります。その際は以下のいずれかの手順でシステム環境変数を設定してください。**
1. envコマンドを利用して登録
2. Pleasanterサービス用スクリプト(/etc/systemd/system/pleasanter.service)に追記する。
ここではデータベース接続文字列を指定する例を記載します。
- 追記前
```
~
[Service]
ExecStart = /usr/local/bin/dotnet Implem.Pleasanter.dll
~
```
- 追記後
```
~
[Service]
ExecStart=/usr/bin/env \
Implem.Pleasanter_Rds_PostgreSQL_SaConnectionString="Server=localhost;Port=5432;Database=postgres;UID=postgres;PWD=SetSaPWD" \
Implem.Pleasanter_Rds_PostgreSQL_OwnerConnectionString="Server=localhost;Port=5432;Database=Implem.Pleasanter;UID=Implem.Pleasanter_Owner;PWD=SetAdminsPWD" \
Implem.Pleasanter_Rds_PostgreSQL_UserConnectionString="Server=localhost;Port=5432;Database=Implem.Pleasanter;UID=Implem.Pleasanter_User;PWD=SetUsersPWD" \
/usr/local/bin/dotnet Implem.Pleasanter.dll
~
```
## 対応バージョン
|対応バージョン|内容|
|:--|:--|
|1.2.21.0 以降|資格情報をシステム環境変数に登録できる機能を追加|
|1.3.26.0 以降|Service.jsonのDeploymentEnvironmentを対象に追加|
|1.4.16.0 以降|Kvs.jsonのConnectionStringForSessionを対象に追加|
## 関連情報
<div id="ManualList"><ul><li><a href="/ja/manual/kvs-json">パラメータ設定:Kvs.json</a><span>2025/05/13 up</span></li>
<li><a href="/ja/manual/mail.json">パラメータ設定:Mail.json</a><span>2025/05/13 up</span></li>
<li><a href="/ja/manual/rds-json">パラメータ設定:Rds.json</a><span>2025/05/13 up</span></li>
<li><a href="/ja/manual/security-json">パラメータ設定:Security.json</a><span>2025/05/13 up</span></li>
<li><a href="/ja/manual/service-json">パラメータ設定:Service.json</a><span>2025/05/13 up</span></li></ul></article></div><input id="SearchTextHidden" type="hidden" value="" />