Main Content

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

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

メモ

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

前提条件

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

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

webapps_acc_ctl.json ファイルの作成

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

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

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

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

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

  4. 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 の場合、サポートされるアクションは executemodify です。この場合、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 認証ファイルで userAttributeNamegroupAttributeName の値を設定する場合、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 が設定されている必要があります。

関連するトピック