このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
ポリシーベースのアクセス
メモ
ポリシーベースのアクセスはスタンドアロンの MATLAB® Web App Server™ 製品ではサポートされており、MATLAB Compiler™ に含まれる開発バージョンではサポートされていません。詳細については、MATLAB Web App Server の違いを参照してください。
前提条件
webapps_acc_ctl.json
ファイルの作成
サーバー上でポリシーベースのアクセスを有効にすると、認証されたサブジェクトがサーバー上の Web アプリにアクセスできるようにする属性ベースのルールを作成できます。
ポリシーベースのアクセスを有効にするには:
SSL が有効になっているかどうかを確認します。詳細については、SSLを有効にするを参照してください。
認証が有効になっているかどうかを確認し、
webapps_authn.json
ファイルにuserAttributeName
値とgroupAttributeName
値のいずれかまたは両方が指定されていることを確認します。詳細については、認証を参照してください。サーバーの
apps
ルート フォルダー内にフォルダーが存在するかどうかを確認します。ポリシーベースのアクセスを有効にするためにフォルダーは必須ではありませんが、フォルダーを使用すると、Web アプリを整理し、アクセス可能なリソースとして指定できます。詳細については、ウェブアプリを整理するためのフォルダを作成するを参照してください。webapps_acc_ctl.json
という名前のファイルを作成し、webapps_private
フォルダーに配置します。webapps_private
フォルダは次の場所にあります:オペレーティング システム フォルダーの場所 Windows®
%ProgramData%\MathWorks\webapps\R2024a\config\webapps_private
Linux®
/local/MathWorks/webapps/R2024a/config/webapps_private
macOS
/Library/Application Support/MathWorks/webapps/R2024a/config/webapps_private
webapps_acc_ctl.json
の JSON スキーマは次のとおりです。
{
"version": "<major>.<minor>.<patch>",
"policy": [
{
"id": "<policy_id>",
"description": "<policy_description>",
"rule": [
{
"id": "<rule_id>",
"description": "<rule_description>",
"subject": { "<attribute_name_of_auth_subject>": [ "<attribute_value_of_auth_subject>" ] },
"resource": { "<app OR folder>": [ "<app_name OR folder_name>" ] },
"action": [ "<action_type>" ]
},
{
"id": "<rule_id>",
"description": "<rule_description>",
"subject": { "<attribute_name_of_auth_subject>": [ "<attribute_value_of_auth_subject>" ] },
"resource": { "<app OR folder>": [ "<app_name OR folder_name>" ] },
"action": [ "<action_type>" ]
}
]
}
]
}
バージョン:JSON スキーマのバージョンを指定します。R2024a のデフォルト値は
1.0.0
です。ポリシー:ポリシー ブロックには、ポリシーベースのアクセスに必要なポリシーのリストが含まれています。ポリシー ファイルでは 1 つのポリシーのみ指定できます。
id:ポリシーのポリシー ID を指定します。ポリシー ID は英数字のセットである必要があります。先頭または末尾の空白は削除されます。次に例を示します。
"id" : "policy420"
説明:ポリシーの説明を指定します。次に例を示します。
"description" : "Company policy for accessing web apps."
ルール:ルール ブロックには、ルール オブジェクトのリストが含まれます。ルール ブロックには複数のルールが存在できます。各ルールには ID が必要であり、
<rule_id>
は各ルールに対して一意である必要があります。id:各ルールに一意のルール ID を指定します。ルール ID は英数字のセットである必要があります。先頭または末尾の空白は削除されます。次に例を示します。
"id" : "rule101"
説明:各ルールの説明を指定します。次に例を示します。
"description" : "Only the Hercules group can run the BloodPressure app."
件名:リソースにアクセスできる認証されたサブジェクトの属性名と値のペアを指定します。
次に例を示します。
"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 の使用 を参照してください。
リソース:アクセスできるリソースのタイプと名前を指定します。タイプ
app
またはfolder
のリソースのみがサポートされます。リソースを指定しないと、認証されたサブジェクトは、サーバー上にアプリまたはフォルダーが存在していても、それらにアクセスできません。フォルダーの作成方法については、ウェブアプリを整理するためのフォルダを作成する を参照してください。たとえば、ルート レベルでアプリへのアクセスを指定するには、次のようにします。
"resource": { "app": ["BloodPressure"] }
たとえば、特定のフォルダー内のアプリへのアクセスを指定するには、次のようにします。
"resource": { "app": ["MagicFolder/CardTricks"] }
たとえば、特定のフォルダー内のすべてのアプリへのアクセスを指定するには、次のようにします。
"resource": { "folder": ["MagicFolder"] }
たとえば、ルート フォルダー内のすべてのアプリへのアクセスを指定するには、次のようにします。
"resource": { "folder": ["/"] }
アクション:認証されたサブジェクトが実行できるアクションの種類を指定します。リソース タイプが
app
の場合、サポートされるアクションはexecute
であり、これによりサブジェクトは Web アプリを実行できます。リソース タイプがfolder
の場合、サポートされるアクションはexecute
とmodify
です。この場合、execute
アクションにより、対象者は指定されたフォルダー内のすべての Web アプリを実行できるようになります。modify
アクションでは、webapps_app_roles.json
ロールベースのアクセス ファイルでサブジェクトに 作成者 のロールが割り当てられている場合、サブジェクトがフォルダーに Web アプリをアップロードしたり、フォルダーから Web アプリを削除したりできます。webapps_app_roles.json
ロールベース アクセス ファイルで ユーザー のロールを割り当てられたサブジェクトは、modify
アクションが割り当てられている場合でも、フォルダーに Web アプリをアップロードしたり、フォルダーから Web アプリを削除したりすることはできません。次に例を示します。"action": ["execute", "modify"]
詳細については、ロールベースのアクセスを参照してください。
LDAP 認証の webapps_acc_ctl.json
ファイルの例
{
"version": "1.0.0",
"policy" : [
{
"id": "policy1001",
"description": "Web Apps Access Control Policy",
"rule": [
{
"id": "rule101",
"description": "Sales group can run the BloodPressure app.",
"subject": { "memberOf": ["cn=Sales,ou=sales,ou=groups,dc=example,dc=com"] },
"resource": { "app": ["BloodPressure"] },
"action": ["execute"]
},
{
"id": "rule102",
"description": "Specified subjects can run the CardTricks app in the MagicDir folder.",
"subject": { "uid": ["erooney"] },
"resource": { "app": ["MagicDir/CardTricks"] },
"action": ["execute"]
},
{
"id": "rule103",
"description": "Specified subjects can run all apps in the MagicDir folder and modify (upload or delete) apps in MagicDir folder.",
"subject": { "uid": ["fbueller"] },
"resource": { "folder": ["MagicDir"] },
"action": ["execute", "modify"]
},
{
"id": "rule104",
"description": "Specified subjects can run all apps under the DayOff folder.",
"subject": { "uid": ["cfrye", "psloane"] },
"resource": { "folder": ["DayOff"] },
"action": ["execute"]
},
{
"id": "rule105",
"description": "Specified subjects can run all apps in the apps root folder and modify (upload or delete) apps in the apps root folder.",
"subject": { "uid": ["jbueller"] },
"resource": { "folder": ["/"] },
"action": ["execute", "modify"]
}
]
}
]
}
注意
webapps_acc_ctl.json
の JSON スキーマ構文は厳格に適用されます。スキーマ構文にエラーがあると、サーバーが起動しなかったり、ログインしようとしたときにサーバーへのアクセスが拒否されたりする可能性があります。
認証とロールベースのアクセスによるポリシーベースのアクセスの使用
認証によるポリシーベースのアクセス
ポリシーベースのアクセスを使用する場合は、
webapps_authn.json
認証ファイルのappConfig
ブロックに次のプロパティを含め、適切な値を設定する必要があります。userAttributeName
groupAttributeName
これらのプロパティの値を含めて設定しないと、サーバーは起動しません。詳細については、認証を参照してください。
ポリシーベースのアクセスを使用し、
webapps_authn.json
認証ファイルでuserAttributeName
とgroupAttributeName
の値を設定する場合、webapps_acc_ctl.json
ポリシーベースのアクセス ファイルでsubject
プロパティに指定された属性は、認証ファイルで設定した値と一致する必要があります。認証ファイル (webapps_authn.json) ポリシーベースのアクセス ファイル (webapps_acc_ctl.json) "userAttributeName": "
<value>
", "groupAttributeName": "<value>
""subject": { "
<attrib>
": ["..."] } "subject": { "<attrib>
": ["..."] }たとえば、
webapps_authn.json
認証ファイルに次の値を設定するとします。"userAttributeName": "uid", "groupAttributeName": "memberOf"
次に、
webapps_acc_ctl.json
ポリシーベースのアクセス ファイルでも同じ値を使用する必要があります。"subject": { "uid": ["..."] }
"subject": { "memberOf": ["..."] }
JSON ファイル内の属性が一致しないと、サーバーが起動しません。詳細については、ポリシーベースのアクセスを参照してください。
メモ
ロールベースのアクセスとは独立した認証でポリシーベースのアクセスを使用できます。ただし、このタイプのアクセスでは、認証されたサブジェクトは Web アプリを実行することはできますが、変更することはできません。
認証によるポリシーベースおよびロールベースのアクセス
ポリシーベースのアクセスとロールベースのアクセスを同時に使用し、
webapps_authn.json
認証ファイルでuserAttributeName
および/またはgroupAttributeName
の値を設定する場合、webapps_acc_ctl.json
ポリシーベースのアクセス ファイルのsubject
プロパティに指定された属性と、groups
およびusers
プロパティに指定された属性は、認証ファイルで設定した値と一致する必要があります。認証ファイル ( webapps_authn.json
)ポリシーベースのアクセス ファイル ( webapps_acc_ctl.json
)ロールベース アクセス ファイル ( webapps_app_roles.json
)"userAttributeName": "
<value>
", "groupAttributeName": "<value>
""subject": { "
<attrib>
": ["..."] } "subject": { "<attrib>
": ["..."] }"users": { "
<attrib>
": ["..."] } "groups": { "<attrib>
": ["..."] }たとえば、
webapps_authn.json
認証ファイルに次の値を設定するとします。"userAttributeName": "uid", "groupAttributeName": "memberOf"
次に、
webapps_app_roles.json
ロールベース アクセス ファイルでも同じ属性を使用する必要があります。"appRoles": [ { "id": "User", "description": "User role info", "groups": { "memberOf": ["..."] }, "users": { "uid": ["..."] } }, { "id": "Author", "description": "Author role info", "groups": { "memberOf": ["..."] }, "users": { "uid": ["..."] } } ]
また、
webapps_acc_ctl.json
ポリシーベースのアクセス ファイルでは同じ値を使用する必要があります。"subject": { "memberOf": ["..."] }
"subject": { "uid": ["..."] }
値が一致しないと、サーバーは起動しません。詳細については、ロールベースのアクセスを参照してください。
メモ
認証によるポリシーベースのアクセスとロールベースのアクセスを使用する場合、認証されたサブジェクトが Web アプリを変更できるようにするには、webapps_app_roles.json
ロールベースのアクセス ファイルで認証されたサブジェクトに Author のロールが割り当てられ、webapps_acc_ctl.json
ポリシーベースのアクセス ファイルでアクションとして modify
が設定されている必要があります。