このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
MATLAB Web App Server でのシークレットのアクセスを制御する
パスワードなどの機密情報をシークレットとして保存することで、アプリケーション コード内で機密情報が公開されるのを防ぐことができます。シークレットとは、暗号化された形式で安全に保存したい機密情報です。各シークレットは、名前、値、およびオプションのメタデータで構成されます。Web アプリで getSecret (MATLAB) 関数を使用してシークレットを取得します。デプロイメントでシークレットを使用する方法の詳細については、デプロイされたアプリケーションで機密情報を処理する を参照してください。
MATLAB® Web App Server™ のシークレットをセキュアな vault に保管できます。MATLAB Web App Server でシークレットを追加および管理するには、次のいずれかのオプションを使用します。
webapps-secretsを使用してコマンド ラインで秘密鍵を管理します。MATLAB Web App Server の開発バージョンを使用している場合は、グラフィカル インターフェースを使用してシークレットを管理します。詳細については、MATLAB Compiler の MATLAB Web App Server の開発用バージョンの構成 (MATLAB Compiler) を参照してください。
サーバー上でポリシーベースのシークレット アクセスを有効にすると、認証されたサブジェクトがサーバー vault に保存されているシークレットにアクセスできるようにする属性ベースのルールを作成できます。サーバー管理者のみがvaultのキーを持ち、 vault の場所にアクセスできるようにします。
前提条件
MATLAB Web App Server のインスタンス。詳細については、セットアップ MATLAB Web App Serverを参照してください。
ユーザー認証を使用してシークレットへのアクセスを制御するには、サーバー上で認証を有効にする必要があります。詳細については、認証を参照してください。
認証はスタンドアロンの MATLAB Web App Server 製品ではサポートされており、MATLAB Compiler™ に含まれる開発バージョンではサポートされていません。詳細については、MATLAB Web App Server の違い を参照してください。
シークレットへのアクセスを制御する
シークレット アクセス制御ファイルを使用すると、サーバー上に保存されているシークレットにアクセスできる認証済みユーザーまたはグループを指定できます。
サーバー認証が有効になっている場合、シークレット アクセス制御はデフォルトで有効になり、ポリシーで指定されない限り、認証されたユーザーはシークレットにアクセスできません。サーバー上で認証を有効にするには、認証 を参照してください。
アクセス制御を有効にするには、webapps_secrets_acc_ctl.json という名前のファイルを作成し、config フォルダー内にある webapps_private フォルダーに配置します。
webapps_private フォルダは次の場所にあります:
| オペレーティング システム | フォルダーの場所 |
|---|---|
Windows® |
|
Linux® |
|
macOS |
|
webapps_secrets_acc_ctl.json は次の JSON スキーマを使用する必要があります。
{
"version": <version_string>,
"policy": [
{
"id": <id_string>,
"description": <description_string>,
"rule": [
{
"id": <rule_id_string>,
"description": <rule_description_string>,
"subject": {
"uid": [<user_string>, <user_string>]
},
"resource": {
"secret": [<secret_key_string>, <secret_key_string>]
},
"action": <action_string>
}
]
}
]
}バージョン:JSON スキーマのバージョンを指定します。R2025a のデフォルト値は
1.2.0です。id:ポリシーのポリシー ID を指定します。ポリシー ID は英数字のセットである必要があります。先頭または末尾の空白は削除されます。以下に例を示します。
"id" : "policy420"説明:ポリシーの説明を指定します。以下に例を示します。
"description" : "Company policy for accessing web app secrets."id:各ルールに一意のルール ID を指定します。ルール ID は英数字のセットである必要があります。先頭または末尾の空白は削除されます。以下に例を示します。
"id" : "rule1"説明:各ルールの説明を指定します。以下に例を示します。
"description": "Only user id 'mluser' can access secret 'app1.*'"件名:認証されたサブジェクトに指定されたシークレットへのアクセスを許可するには、1 つ以上の属性名と値のペアを指定します。
以下に例を示します。
"subject": { "memberOf": ["CN=Middle,OU=middle,ou=groups,DC=school,DC=com"] }"subject": { "groups": ["Sales"] }"subject": { "uid": ["fbueller", "cfrye"] }Azure® Active ディレクトリを使用しており、グループ ID を取得する必要がある場合は、Azure Active Directory の使用 を参照してください。
シークレット:指定されたサブジェクトがアクセスできる 1 つ以上のシークレットの名前を指定します。
以下に例を示します。
シークレット名の末尾ではワイルドカード (*) がサポートされます。たとえば、"secret": ["mypassword"]"myapp1.*"です。アクション:指定されたサブジェクトが実行できるアクションの種類を指定します。サポートされている唯一のアクションは
readであり、これはサブジェクトにシークレットへの読み取りアクセス権を付与します。詳細については、ロールベースのアクセス を参照してください。
webapps_secrets_acc_ctl.json のサンプル ファイル
{
"version": "1.0.0",
"policy": [
{
"id": "secretPolicyID01",
"description": "Secret Access Policy for user access",
"rule": [
{
"id": "rule101",
"description": "Only allow user 'mluser' to access secret 'app1.*' ",
"subject": { "uid": ["mluser"] },
"resource": {
"secret": ["app1.*"]
},
"action": ["read"]
},
{
"id": "rule102",
"description": "Only allow 'mluser' to access 'myusername' and 'password_for_all' ",
"subject": {"uid": ["mluser"]},
"resource": {
"secret": ["myusername","password_for_all"]
},
"action": ["read"]
},
{
"id": "rule103",
"description": "Allow admin group to access secrets 'username_for_admin','password_for_admin' ",
"subject": { "group": ["admin"] },
"resource": {
"secret":["username_for_admin","password_for_admin"]
},
"action": ["read"]
}
]
}
]
}シークレットのアクセス範囲を設定する
シークレット構成ファイルを使用すると、サーバーに保存されている秘密鍵の階層を整理できます。たとえば、異なるユーザーまたは Web アプリに対して異なるシークレット値を持つ同じシークレット キー名を使用するために、特定のキー名のスコープを制限できます。
シークレットのスコープを設定するには、webapps_secrets_config.json という名前のファイルを作成し、webapps_private フォルダーに配置します。
webapps_secrets_config.json は次の JSON スキーマを使用する必要があります。
{
"version" : <version_string>
"description" : <policy_description_string>
“secretKeyMap” : [
{
"id" : <rule_id_string>,
"description" : <rule_description_string>,
"secretKey": [<secret_key_string>, <secret_key_string>, ...],
"scope" : <scope_string>
}
]
}バージョン:JSON スキーマのバージョンを指定します。R2025a のデフォルト値は
1.2.0です。説明:ポリシーの説明を指定します。以下に例を示します。
"description" : "Company policy for accessing web app secrets."シークレットキーマップ:秘密鍵マップ ブロックには、ルール オブジェクトのリストが含まれています。ブロック内に複数のルールが存在する場合があります。ルールは順番に適用され、最初のルールが最も優先されます。各ルールには一意の ID が必要です。
id:各ルールに一意のルール ID を指定します。ルール ID は英数字のセットである必要があります。先頭または末尾の空白は削除されます。以下に例を示します。
"id" : "rule101"説明:各ルールの説明を指定します。以下に例を示します。
"description": "Only user id 'mluser' can access secrets 'app1.*'"秘密鍵:アクセスできるシークレットの名前を指定します。
以下に例を示します。
シークレット名の末尾ではワイルドカード (*) がサポートされます。たとえば、"secretKey": ["mypassword"]"myapp1.*"です。スコープ:指定されたシークレットへのアクセスを許可するユーザー、グループ、または特定の Web アプリを指定します。スコープには、任意の静的文字列またはマクロを含む文字列を指定できます。次のマクロがサポートされています:
$UserID—ログオンセッションのユーザーID$AppName- CTFファイル名とフォルダ名を含むWebアプリ名
メモ
$UserID マクロを使用するには、config/webapps_private ディレクトリに userinfo.json を含める必要があります。詳細については、ユーザーに基づいてWebアプリの動作をカスタマイズする を参照してください。
webapps_secrets_config.json のサンプル ファイル
{
"version": "1.2.0",
"description": "Configure secret key mapping rules",
"secretKeyMap": [
{
"id" : "rule01",
"description" : "Limit db_password only to app testapp1",
"secretKey" : "db_password",
"scope" : "testapp1"
},
{
"id" : "rule02",
"description" : "Ensure unique password per user for app testapp1",
"secretKey" : "testapp1.password",
"scope" : "$UserID"
},
{
"id" : "rule03",
"description" : "Prevent secret name collision between multiple apps",
"secretKey" : "database_name",
"scope" : "$AppName"
}
]
}参考
webapps-secrets | getSecret (MATLAB)