デジタル・ツイン・アクセスをモデル別に制限
IAMポリシーでモデル条件を使用して、選択したモデルに関連付けられたデジタル・ツイン・リソースへの読取りアクセス権を付与します。
IoTドメインに関連付けられたデジタル・ツイン・リソースは、そのコンパートメントを共有します。モデル条件を使用すると、そのコンパートメント内のグループのアクセスを絞り込むことができます。管理者がポリシーを作成し、ユーザーはコンソール、CLI、SDKまたはAPIを介してリソースにアクセスします。
次の例では、読取りアクセス権のみを付与します。デジタル・ツインに対してコマンドを作成、更新、削除または送信する権限は付与されません。グループ、コンパートメントおよびモデルのプレースホルダを独自の値に置き換えます。
1つのモデルに関連付けられたリソースの読取り
target.digital-twin-model.idを使用して、関連付けられたモデルOCIDを照合します。ユーザーのニーズに応じて、各リソース・タイプを個別に付与します。
Allow group <group-name> to read iot-digital-twin-model in compartment <compartment-name> where target.digital-twin-model.id = '<model-OCID>'
Allow group <group-name> to read iot-digital-twin-adapter in compartment <compartment-name> where target.digital-twin-model.id = '<model-OCID>'
Allow group <group-name> to read iot-digital-twin-instance in compartment <compartment-name> where target.digital-twin-model.id = '<model-OCID>'
アダプタおよびインスタンスの条件は、アダプタまたはインスタンスのOCIDではなく、関連するモデルを参照します。モデルが関連付けられていない非構造化インスタンスがこのモデル・スコープ付与と一致しません。
モデル仕様URIによるインスタンスの読取り
target.digital-twin-model.spec-uriを使用して、モデル仕様識別子を照合します。完全一致の場合:
Allow group <group-name> to read iot-digital-twin-instance in compartment <compartment-name> where target.digital-twin-model.spec-uri = 'dtmi:com:example:hvac;1'
仕様識別子のファミリを照合するには、IAMパターンを使用します。この例では、バージョン1のみでなく、パターンで一致するすべてのバージョンが含まれています。
Allow group <group-name> to read iot-digital-twin-instance in compartment <compartment-name> where target.digital-twin-model.spec-uri = /dtmi:com:example:hvac;*/
アクセス要件を満たす最も狭い一致を選択します。
リソースOCIDによる1つのデジタル・ツイン・モデルの読取り
特定のデジタル・ツイン・モデルへの読取りアクセス権を付与するには、そのモデルのOCIDでtarget.resource.idを使用します。
Allow group <group-name> to read iot-digital-twin-model in compartment <compartment-name> where target.resource.id = '<model-OCID>'
この条件は、関連付けられたアダプタまたはインスタンスへのアクセス権を付与するのではなく、リクエストされたモデル自体に一致します。付与範囲が広いテストIDを使用して、許可されたモデルを取得し、成功を確認してから、別のモデルに対して同じリクエストを行い、拒否を確認します。この例では、作成権限またはフィルタ・リストの結果は付与されません。
リスト表示およびその他の権限
これらの条件では、リスト結果はフィルタされません。ユーザーがリソースを参照する必要がある場合は、必要なinspect権限を個別に付与します。次に例を示します:
Allow group <group-name> to inspect iot-digital-twin-instance in compartment <compartment-name>
この個別の権限は、許可されたモデル・スコープ外のインスタンスの名前を公開できます。インスタンスをリストしても、そのコンテンツを取得したり、コマンドを送信するためのアクセス権は付与されません。
読取り専用モデル・ポリシーは、作成権限を付与したり、インスタンスのモデル・アソシエーションの変更を認可したりしません。これらの操作を個別のアクセス要件として処理し、失敗した読取りを解決するためにこれらの例をmanageに広げないでください。
これらの例は、デジタル・ツイン・リソースへのIAMアクセスを制御します。デバイス証明書やシークレットを置き換えたり、直接データベース・アクセスを構成したり、通常のアプリケーション・メタデータを認可ルールに変換したりすることはありません。
各リソース・タイプおよび動詞に関連付けられている権限については、Internet of Thingsプラットフォームのポリシー詳細を参照してください。
許可されたアクセスと拒否されたアクセスの両方を検証
- 独立してアクセス権を付与する幅広いIoT権限のないテストIDを使用します。
- 許可されたモデルに関連付けられたリソースを取得し、操作が成功することを確認します。
- 同じコンパートメント内の別のモデルに関連付けられたリソースで同じ操作を試行し、アクセスが拒否されていることを確認します。別途承認されたIDを使用して、リソースが存在することを確認します。
- リスト・アクセス権を付与した場合は、リスト表示でモデル・スコープ外のリソースの読取りも許可されていないことを確認します。
- 仕様URIパターンの場合は、一致モデル識別子と不一致モデル識別子の両方をチェックします。