API での役割の作成

このトピックでは、カスタム役割を作成して Management API でユーザーに割り当てる方法を説明します。また、API で役割の割り当てをテストする方法も説明します(カスタム役割の概要については、UI でのカスタム役割の作成をご覧ください)。

権限の設定について

役割の権限は Management API の URI に設定されます(管理 UI の URI ではありません)。たとえば、Edge 組織でアプリ デベロッパーの資格に PUT、GET または DELETE 権限を設定する場合、developers の Management API のパスが https://api.enterprise.apigee.com/v1/organizations/{org_name}/developers のため、/developers リソースに権限を設定します。このトピックの Management API 呼び出しで説明しているように、権限のスコープは特定の組織に設定されているため、権限を定義するときに、パスに組織の部分を含める必要はありません。

特定のエンティティの権限を設定することもできます。例:

  • 1 人のデベロッパーに権限を設定するには、/developers/steve@example.com に権限を設定します。
  • 特定の API プロダクト(free-api-product など)の場合は、/apiproducts/free-api-product に設定します。
  • 特定の環境の Key-Value マップの場合、テスト環境のすべての Key-Value マップで /environments/test/keyvaluemaps/fooMap または /environments/test/keyvaluemaps/* に権限を設定します。

API を使用して設定する権限:

  • カスタム役割のユーザーは、自分の権限に従って Management API 呼び出しを行うことができます。たとえば、すべての API プロキシに読み取り専用アクセスが許可されている役割の場合、List API Proxies API は使用できますが、Create an API Proxy API は使用できません。
  • カスタム役割のユーザーが管理 UI に表示できる内容や実行できるアクションを決めます。たとえば、API プロキシに対する読み取り専用アクセスの場合、[API Proxies] ページの [+API Proxy] ボタンと [Delete] ボタンを使用できません。

権限を設定できるリソースとパスを確認するには、各リソースの URL で Management API のリファレンスを確認します。

役割管理の詳細については、ユーザーの役割 API をご覧ください。

構文と優先順位

権限設定で、アスタリスクのワイルドカード(*)を使用すると、この文字より後ろのすべてに一致させることができます。ただし、親リソース(/developers など)にのみ権限を設定し、より詳細な権限(/developers/* など)を設定していない場合、この権限は /developers から後ろのすべてに適用されます。

権限では、PUT は POST としても機能します。

リソースに汎用的な権限と詳細権限の両方を設定できます。権限の重複がある場合は、より細かい設定が優先されます。たとえば、次の権限を developeradmin 役割に設定したとします。

  • /developers に対する PUT
  • /developers/* に対する GET

この場合、developeradmin には次の操作が許可されます。

  • デベロッパーを作成できますが、特定のデベロッパーやサブエンティティは更新できません(このパスでは GET 権限のほうが細かいため)。
  • 任意のデベロッパーまたはサブエンティティを取得できますが、すべてのデベロッパーのリストは取得できません。

API で設定できるアクセス許可の全リストについては、権限のリファレンスをご覧ください。

development という新しいカスタム役割を作成する

development 役割を作成して、デベロッパーに API プロキシの表示、作成、更新を許可します。

    $ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles -H "Content-type:application/json" -X POST -d'{ "role" : [ { "name" : "development" } ] }'
    

開発役割に権限を追加する

Edge アーティファクトのグループ全体(すべての /apps、/apis、/apiproducts など)や個々のアーティファクト(特定のアプリ、API プロキシ、API プロダクト)には、GET、PUT または DELETE 権限を設定できます。

GET を使用すると、ユーザーは任意の API を表示できます。API プロキシ構成ファイル、関連するポリシー、JavaScript、XSLT ファイルなども表示できます。API の PUT 権限を使用すると、開発者は API プロキシの作成、変更、インポート、エクスポート、デプロイ、デプロイ解除を行うことができます。

path 属性には、権限を設定するアーティファクトを指定します。たとえば、/applications、/apps、/apiproducts、/developers、/reports などを指定します。

    curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles/development/permissions -H "Content-type:application/json" -X POST -d'{"path" : "/applications","permissions" : [ "put", "get" ]}'
    

テスト役割の作成

品質エンジニアに API プロキシとそのコンテンツ(ポリシーを含む)の表示を許可するには、テスト役割を作成します。

    $ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles -H "Content-type:application/json" -X POST -d'{ "role" : [ { "name" : "testing" } ] }'
    

テスト役割に権限を追加する

GET を使用すると、ユーザーは構成ファイルを含むすべての API を表示できます。また、関連するポリシー、JavaScript、XSLT ファイルなども表示できます。この権限をテスト役割に追加すると、品質エンジニアがテスト対象の API のコンテンツを確認できるようになります。ただし、この役割のユーザーは、API プロキシの作成、変更、インポート、エクスポート、デプロイ、デプロイ解除を行うことができません。

    $ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles/testing/permissions -H "Content-type:application/json" -X POST -d'{"path" : "/applications","permissions" : [ "get" ]}'
    

オンプレミスにインストールした Edge の場合、ユーザーに Edge UI へのログインを許可するために必要な権限の最小セットは次のとおりです。

    {"path" : "/","permissions" : [ "get" ]}
    {"path" : "/*","permissions" : [ ]}
    {"path" : "/environments","permissions" : [ "get" ]}
    {"path" : "/userroles","permissions" : [ "get" ]}
    

次の cURL コマンドを使用して、これらの権限を設定します。

    curl -H "Content-Type:application/json" -u email:password \
    -X POST \
    http://<ms-IP>:8080/v1/organizations/{org_name}/userroles/testing/resourcepermissions  \
    -d '{
     "resourcePermission" : [
       {
        "path" : "/",
        "permissions" : [ "get" ]
       },
    {
        "path" : "/*",
        "permissions" : []
       },
    {
        "path" : "/environments",
        "permissions" : [ "get" ]
       },
       {
        "path" : "/userroles",
        "permissions" : [ "get"]
       }
      ]
    }'
    

<ms-IP> は、Edge Management Server の IP アドレスまたは DNS 名です。

ユーザーをテスト役割に追加する

ユーザー役割を持つユーザーをプロビジョニングします。

    $ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/users/justauser@apigee.com/userroles -H "Content-type:application/json" -X POST -d'{"role" : [ {"name" : "testing"} ] }'
    

ユーザーとして API を表示する

ユーザーの権限を使用して、API プロキシの表示リクエストを API サービスに送信します。このユーザーには、API とそのコンテンツの表示権限が必要です。
    $ curl -u justauser@apigee.com:secret https://api.enterprise.apigee.com/v1/o/{org_name}/apis
    
    $ curl -u justauser@apigee.com:secret https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/policies
    

テスト役割のユーザーとして API を作成する

このユーザーの役割を使用して、API プロキシの作成リクエストを API サービスに送信します。テスト役割には API の作成が許可されていないため、このリクエストは API サービスによって拒否されます。

    $ curl -u justauser@apigee.com:secret -H "Content-Type: application/json" https://api.enterprise.apigee.com/v1/o/{org_name}/apis -X POST -d'{"name" : "rbacTestApi"}'
    

ユーザーを開発役割に追加する

次に、開発役割を持つユーザーをプロビジョニングします。

    $ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/users/justauser@apigee.com/userroles -H "Content-type:application/json" -X POST -d'{"role" : [ {"name" : "development"} ] }'
    

開発役割のユーザーとして API を作成する

このユーザーの役割を使用して、API プロキシの作成リクエストを API プラットフォームに繰り返し送信します。開発役割には API の作成が許可されているため、このリクエストは成功します。

    $ curl -u justauser@apigee.com:secret -H "Content-Type: application/json" https://api.enterprise.apigee.com/v1/o/{org_name}/apis -X POST -d'{"name" : "rbacTestApi"}'
    

ユーザーのユーザー役割を取得する

組織管理者は、すべての組織のユーザーの役割をいつでも確認できます。

    $ curl -u email:password -X GET https://api.enterprise.apigee.com/v1/users/justauser@apigee.com/userroles