

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 例 5: Verified Permissions と Cedar を使用した UI フィルタリング
<a name="avp-ui-filtering-examples"></a>

Verified Permissions を使用して、承認されたアクションに基づいて UI 要素の RBAC フィルタリングを実装することもできます。これは、マルチテナント SaaS アプリケーションの場合に、特定のユーザーまたはテナントに関連付けられる可能性のあるコンテキスト依存の UI 要素を持つアプリケーションにとって非常に役立ちます。

次の例では、 `Users`の `Role``viewer`は更新を実行できません。これらのユーザーの場合、UI は更新ボタンをレンダリングしないでください。

![Amazon Verified Permissions と Cedar を使用した UI フィルタリングの例](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/saas-multitenant-api-access-authorization/images/avp-example-5.png)


この例では、単一ページのウェブアプリケーションには 4 つのボタンがあります。表示されるボタンは、現在アプリケーションにログインしている`Role`ユーザーの によって異なります。単一ページのウェブアプリケーションが UI をレンダリングすると、Verified Permissions にクエリを実行して、ユーザーが実行を許可されているアクションを決定し、承認の決定に基づいてボタンを生成します。

次のポリシーでは、値が の タイプ`Role`がユーザーとデータの両方を表示`viewer`できることを指定します。このポリシーの承認`ALLOW`決定には、 `viewData`または `viewUsers`アクションが必要であり、リソースをタイプ `Data`または に関連付ける必要もあります`Users`。`ALLOW` 決定により、UI は `viewDataButton`と の 2 つのボタンをレンダリングできます`viewUsersButton`。

```
permit (
    principal in GuiAPP::Role::"viewer",
    action in [GuiAPP::Action::"viewData", GuiAPP::Action::"viewUsers"],
    resource 
)
when {
   resource in [GuiAPP::Type::"Data", GuiAPP::Type::"Users"]
};
```

次のポリシーでは、値が の 型`Role`がデータのみを表示`viewerDataOnly`できることを指定します。このポリシーの承認`ALLOW`決定には `viewData`アクションが必要であり、 タイプに関連付けるリソースも必要です`Data`。`ALLOW` 決定により、UI はボタン をレンダリングできます`viewDataButton`。

```
permit (
    principal in GuiApp::Role::"viewerDataOnly",
    action in [GuiApp::Action::"viewData"],
    resource in [GuiApp::Type::"Data"] 
);
```

次のポリシーでは、値が の タイプ`Role`がデータとユーザーを編集して表示`admin`できるように指定します。このポリシーの承認`ALLOW`決定には、`updateData`、、`updateUsers``viewData,`または のアクションが必要です。また`viewUsers`、リソースをタイプ `Data`または に関連付ける必要があります`Users`。`ALLOW` 決定により、UI は 、`updateDataButton`、`updateUsersButton`、 `viewDataButton`の 4 つのボタンをすべてレンダリングできます`viewUsersButton`。

```
permit (
    principal in GuiApp::Role::"admin",
    action in [
        GuiApp::Action::"updateData",
        GuiApp::Action::"updateUsers",
        GuiApp::Action::"viewData", 
        GuiApp::Action::"viewUsers"
       ],
    resource 
)
when {
   resource in [GuiApp::Type::"Data", GuiApp::Type::"Users"]
};
```