Main Content

このページは機械翻訳を使用して翻訳されました。ここをクリックして、元の英語を参照してください。

ポリシーベースのアクセス

メモ

ポリシーベースのアクセスは、スタンドアロンのMATLAB® Web App Server™製品でサポートされており、 MATLAB Compiler™に含まれる開発バージョンではサポートされていません。 $。詳細については、MATLAB Web App Server の違いを参照してください。

前提条件

  • サーバー上で SSL を有効にします。詳細については、SSLを有効にするを参照してください。

  • サーバーで認証を有効にします。詳細については、認証を参照してください。

webapps_acc_ctl.json ファイルの作成

サーバー上でポリシーベースのアクセスを有効にすると、認証されたサブジェクトがサーバー上の Web アプリにアクセスできるようにする属性ベースのルールを作成できます。

ポリシーベースのアクセスを有効にするには:

  1. SSLが有効になっているかどうかを確認します。詳細については、SSLを有効にするを参照してください。

  2. 認証が有効になっているかどうかを確認し、 userAttributeNamegroupAttributeNameの値のいずれかまたは両方がwebapps_authn.jsonファイルに指定されていることを確認してください。詳細については、認証を参照してください。

  3. サーバー上のappsルート フォルダー内にフォルダーが存在するかどうかを確認します。ポリシーベースのアクセスを有効にするためにフォルダーは必要ありませんが、フォルダーを使用すると、Web アプリを整理し、アクセス可能なリソースとして指定できます。詳細については、フォルダーを作成して Web アプリを整理するを参照してください。

  4. webapps_acc_ctl.jsonという名前のファイルを作成し、 webapps_privateフォルダーに配置します。

    webapps_privateフォルダーは次の場所にあります。

    オペレーティング システムフォルダーの場所

    Windows®

    %ProgramData%\MathWorks\webapps\R2023b\config\webapps_private

    Linux®

    /local/MathWorks/webapps/R2023b/config/webapps_private

    macOS

    /Library/Application Support/MathWorks/webapps/R2023b/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>" ] } ] } ] }
  • &quot;バージョン&quot;:JSONスキーマのバージョンを指定します。R2023b のデフォルト値は1.0.0です。

  • &quot;ポリシー&quot;:ポリシー ブロックには、ポリシーベースのアクセスに必要なポリシーのリストが含まれています。ポリシー ファイルに指定できるポリシーは 1 つだけです。

  • ID:ポリシーのポリシー ID を指定します。ポリシー ID は英数字のセットである必要があります。先頭または末尾の空白は削除されます。以下に例を示します。

    "id" : "policy420"
  • &quot;説明&quot;:ポリシーの説明を指定します。以下に例を示します。

    "description" : "Company policy for accessing web apps."
  • &quot;ルール&quot;:ルール ブロックにはルール オブジェクトのリストが含まれます。ルール ブロックには複数のルールが存在できます。各ルールには ID が必要であり、<rule_id> はルールごとに一意である必要があります。

  • ID:各ルールに一意のルール ID を指定します。ルール ID は英数字のセットである必要があります。先頭または末尾の空白は削除されます。以下に例を示します。

    "id" : "rule101"
  • &quot;説明&quot;:各ルールの説明を指定します。以下に例を示します。

    "description" : "Only the Hercules group can run the BloodPressure app."
  • &quot;主題&quot;:リソースにアクセスできる認証済みサブジェクトの属性名と値のペアを指定します。

    以下に例を示します。

    "subject": { "memberOf": ["CN=Middle,OU=middle,ou=groups,DC=school,DC=com"] }
    "subject": { "groups": ["Sales"] }
    "subject": { "uid": ["fbueller", "cfrye"] }

    Azure® Active Directory を使用していて、グループ ID を取得する必要がある場合は、 Azure Active Directory の使用を参照してください。

  • &quot;リソース&quot;:アクセスできるリソースのタイプと名前を指定します。タイプappまたはfolderのリソースのみがサポートされます。リソースを指定しない場合、認証されたサブジェクトは、アプリまたはフォルダーがサーバー上に存在する場合でも、そのアプリまたはフォルダーにアクセスできません。フォルダーの作成方法については、 「 フォルダーを作成して Web アプリを整理する 」を参照してください。

    たとえば、ルート レベルでアプリへのアクセスを指定するには、次のようにします。

    "resource": { "app": ["BloodPressure"] }

    たとえば、特定のフォルダー内のアプリへのアクセスを指定するには、次のようにします。

    "resource": { "app": ["MagicFolder/CardTricks"] }

    たとえば、特定のフォルダー内のすべてのアプリへのアクセスを指定するには、次のようにします。

    "resource": { "folder": ["MagicFolder"] }

    たとえば、ルート フォルダー内のすべてのアプリへのアクセスを指定するには、次のようにします。

    "resource": { "folder": ["/"] }
  • &quot;アクション&quot;:認証されたサブジェクトが実行できるアクションのタイプを指定します。リソース タイプがappの場合、サポートされるアクションはexecuteで、サブジェクトは Web アプリを実行できます。リソースタイプがfolderの場合、サポートされるアクションはexecuteおよびmodifyです。この場合、 executeアクションにより、対象者は指定されたフォルダー内のすべての Web アプリを実行できるようになります。modifyアクション、対象者がwebapps_app_roles.jsonロールベースのアクセス ファイルで作成者のロールを割り当てられている場合、対象者はフォルダに対して 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 スキーマ構文は厳密に適用されます。スキーマ構文にエラーがあると、サーバーが起動しなかったり、ログインしようとするとサーバーへのアクセスが拒否されたりする可能性があります。

認証およびロールベースのアクセスによるポリシーベースのアクセスの使用

認証を伴うポリシーベースのアクセス

  • ポリシーベースのアクセスを使用する場合は、 appConfig webapps_authn.json ブロックに次のプロパティを含めて、適切な値を設定する必要があります。

    • userAttributeName

    • groupAttributeName

    これらのプロパティの値を含めて設定しないと、サーバーが起動しなくなります。詳細については、認証を参照してください。

  • ポリシーベースのアクセスを使用し、 userAttributeName webapps_authn.jsongroupAttributeNameおよび groupAttributeName の値を設定する場合、 subject webapps_acc_ctl.json プロパティは、認証ファイルに設定した値と一致する必要があります。

    認証ファイル (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 アプリの実行のみが可能になり、変更はできなくなります。

認証を伴うポリシーベースおよびロールベースのアクセス

  • ポリシーベースのアクセスとロールベースのアクセスを同時に使用し、 userAttributeNameおよび/またはgroupAttributeNameの値をwebapps_authn.jsonに設定する場合認証ファイル、次にsubjectポリシーベースのアクセス ファイルのwebapps_acc_ctl.jsonプロパティに指定された属性、および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": ["..."] }

    値が一致しないと、サーバーが起動しなくなります。詳細については、役割ベースのアクセスを参照してください。

メモ

認証を伴うポリシーベースのアクセスとロールベースのアクセスを使用する場合、認証されたサブジェクトには、 webapps_app_roles.jsonロールベースのアクセス ファイルで 作成者 のロールが割り当てられ、 を持つ必要があります。 modify は、サブジェクトが Web アプリを変更できるようにするために、webapps_acc_ctl.jsonポリシーベースのアクセス ファイル内のアクションとして実行されます。

関連するトピック