すべてのプロダクト
Search
ドキュメントセンター

API Gateway:RAMを使用してAPIリソースの権限を管理する

最終更新日:Jul 31, 2024

Alibaba Cloud Resource Access Management (RAM) を使用して、企業内のさまざまな従業員にAPIリソースに対するさまざまな権限を付与できます。 APIプロバイダーとして、従業員のRAMユーザーを作成し、APIリソースに対する特定の権限を異なる従業員に付与できます。

説明

ビジネスでAPIの権限管理が必要ない場合は、このトピックをスキップしてください。

  • RAMユーザーはAPI Gatewayのリソースを管理できます。 たとえば、RAMユーザーは、APIグループ、API、またはプラグインを表示、作成、または削除できます。 ただし、RAMユーザーはリソースを所有していません。 Alibaba Cloudアカウントを使用して、RAMユーザーからリソースに対する権限をいつでも取り消すことができます。

  • タグベースの認証を使用して、Alibaba CloudアカウントとRAMユーザーの間でリソースを分離できます。

  • RAMを使用してAPIリソースのアクセス許可を管理する前に、RAMとAPI Gatewayに精通していることを確認してください。 Alibaba Cloudヘルプセンターでは、RAMとAPI Gatewayに関するドキュメントを提供しており、サービスに慣れることができます。

セクション1: ポリシーの概要

ポリシーは、権限の詳細を定義し、効果、リソース、アクション、条件の基本要素を含みます。

1. システムポリシー

API Gatewayは、AliyunApiGatewayFullAccessおよびAliyunApiGatewayReadOnlyAccessの組み込みシステムポリシーを提供します。 RAMコンソールにログインして、[ポリシー] ページでこれらのポリシーを表示できます。 image

  • AliyunApiGatewayFullAccess: RAMユーザーが、APIグループ、API、スロットリングポリシー、アプリケーションなど、関連するAlibaba Cloudアカウント内のすべてのAPI Gatewayリソースを管理することを許可します。

  • AliyunApiGatewayReadOnlyAccess: RAMユーザーは、APIグループ、API、スロットリングポリシー、アプリケーションなど、関連するAlibaba Cloudアカウント内のすべてのAPI Gatewayリソースを表示できます。 ただし、RAMユーザーはリソースを管理できません。

2. カスタムポリシー

カスタムポリシーを作成して、特定のアクションや特定のリソースに対する権限など、より詳細な権限を付与できます。 たとえば、GetUsersの編集権限を付与するカスタムポリシーを作成できます。 作成したカスタムポリシーを表示するには、次の手順を実行します。RAMコンソールにログインします。 左側のナビゲーションウィンドウで、[権限]> [ポリシー] を選択します。 表示されるページで、[ポリシータイプ] ドロップダウンリストから [カスタムポリシー] を選択し、ポリシーを見つけます。

セクション2: ポリシー構文

ポリシーは、特定の構文に基づいて一連の権限を定義します。 ユーザーまたはユーザーのグループにポリシーをアタッチして、特定のリソースに対する特定の権限を付与できます。

例:

{
  "Version": "1",
  "Statement": [
    {
  "Action": "apigateway:Describe *" 、
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}
                

上記の例は、RAMユーザーがAPI Gateway内のすべてのリソースを照会できるようにするポリシーを示しています。

Action要素は、1つ以上のAPI操作を記述する。 Action要素のパラメーターは、次の形式で指定する必要があります。

"Action":"<service-name >:< action-name>"

パラメーター:

  • service-name: Alibaba Cloudサービスの名前。 この例では、apigatewayが指定されています。

  • action-name: API操作の名前。 名前にはワイルドカード文字 (*) を使用できます。 API Gatewayが提供するAPI操作の詳細については、このトピックの「セクション3」の表を参照してください。

    "Action" を "apigateway:Describe *" に設定した場合、許可されたRAMユーザーはAPI Gatewayのすべてのリソースを照会する権限を持ちます。

    "Action" を "apigateway:*" に設定した場合、許可されたRAMユーザーはAPI Gatewayのすべてのリソースを管理する権限を持ちます。

セクション3: リソース構文

Resource要素は、ステートメントがカバーする1つ以上のオブジェクトを指定します。 API Gatewayでは、Resource要素でAPIグループ、スロットリングポリシー、およびアプリケーションを指定できます。 Resource要素のパラメーターは、次の形式で指定する必要があります。

acs:<service-name>:<region>:<account-id>:<relative-id>

パラメーター:

  • acs: サービスのビジネススコープがAlibaba Cloudパブリッククラウドに属していることを示します。

  • service-name: Alibaba Cloudサービスの名前。 この例では、apigatewayが指定されています。

  • region: ポリシーが適用されるリージョンです。 このパラメーターをワイルドカード文字 (*) に設定できます。これは、ポリシーがすべてのリージョンに適用されることを示します。

  • account-id: アカウントのID (123456789012 **** など) 。 このパラメーターは、ワイルドカード文字 (*) に設定できます。

  • relative-id: RAMユーザーに権限を付与するリソースの説明。 このパラメーターは、ファイルパスに似た形式で指定できます。

RDPathは、次のいずれかの形式です。

acs:apigateway:$regionid:$accountid:apigroup/$groupId

例:

acs:apigateway:*:*:apigroup/cbd157704e624ab58a204fd3e0b5ad79

次の表に、API Gatewayのリソースに対するアクセス許可を管理するポリシーを作成するときに、action-nameパラメーターに指定できるAPI操作を示します。 詳細は、「API Gateway APIリファレンス」をご参照ください。

アクション名

説明

リソース

CreateApiGroup

APIグループを作成します。

acs:apigateway:$regionid:$accountid:apigroup/*

ModifyApiGroup

APIグループを変更します。

acs:apigateway:$regionid:$accountid:apigroup/$groupId

DeleteApiGroup

APIグループを削除します。

acs:apigateway:$regionid:$accountid:apigroup/$groupId

DescribeApiGroups

APIグループを照会します。

acs:apigateway:$regionid:$accountid:apigroup/*

CreateApi

APIを作成します。

acs:apigateway:$regionid:$accountid:apigroup/$groupId

DeployApi

APIを発行します。

acs:apigateway:$regionid:$accountid:apigroup/$groupId

AbolishApi

APIの公開を解除します。

acs:apigateway:$regionid:$accountid:apigroup/$groupId

DeleteApi

APIを削除します。

acs:apigateway:$regionid:$accountid:apigroup/$groupId

DescribeApis

APIを照会します。

acs:apigateway:$regionid:$accountid:apigroup/*

CreatePlugin

プラグインを作成します。

acs:apigateway:$regionid:$accountid:plugin/*

ModifyPlugin

プラグインを変更します。

acs:apigateway:$regionid:$accountid:plugin/$pluginId

DeletePlugin

プラグインを削除します。

acs:apigateway:$regionid:$accountid:plugin/$pluginId

AttachPlugin

プラグインをAPIにバインドします。

acs:apigateway:$regionid:$accountid:plugin/$pluginId

DetachPlugin

APIからプラグインのバインドを解除します。

acs:apigateway:$regionid:$accountid:plugin/$pluginId

DescribePluginsByApi

APIにバインドされているプラグインを照会します。

acs:apigateway:$regionid:$accountid:plugin/$pluginId

CreateApp

アプリケーションを作成します。

acs:apigateway:$regionid:$accountid:app/*

ModifyApp

アプリケーションを変更します。

acs:apigateway:$regionid:$accountid:app/$appId

DeleteApp

アプリケーションを削除します。

acs:apigateway:$regionid:$accountid:app/$appId

DescribeAppAttributes

アプリケーションを照会します。

acs:apigateway:$regionid:$accountid:app/$appId

SetApisAuthorities

アプリケーションにAPIの呼び出しを許可します。

acs:apigateway:$regionid:$accountid:apigroup/$groupId

DescribeAuthorizedApps

APIの呼び出しが許可されているアプリケーションを照会します。

acs:apigateway:$regionid:$accountid:apigroup/$groupId

SetVpcAccess

仮想プライベートクラウド (VPC) アクセス許可を作成します。

acs:apigateway:$regionid:$accountid:vpcaccess/*

RemoveVpcAccess

VPCアクセス権限を削除します。

acs:apigateway:$regionid:$accountid:vpcaccess/*

DescribeVpcAccess

VPCアクセス権限を照会します。

acs:apigateway:$regionid:$accountid:vpcaccess/*

DescribeInstances

専用インスタンスを照会します。

acs:apigateway:$regionid:$accountid:instance/$instanceId

RAMユーザーにすべてのAPIを照会する権限を付与します。

{
          "Version": "1",
          "Statement": [
            {
                      "Action": "apigateway:Describe*",
                      "Resource":"acs:apigateway:$regionid:$accountid:apigroup/*",
                      "Effect": "Allow"
            }
          ]
}                        

'version:v1' タグがアタッチされているすべてのAPIグループを照会する権限をRAMユーザーに付与します。

{
	  "Version": "1",
	  "Statement": [
	    {
      		"Action": "apigateway:Describe*",
	      	"Resource":"acs:apigateway:$regionid:$accountid:apigroup/*",
	      	"Effect": "Allow", 
                 "Condition": {
                        "StringEquals": {
                             "apigateway:tag/version": "v1"
                        }
                 }
             }
	  ]
}			

APIグループ内のすべてのAPIを管理する権限をRAMユーザーに付与します。

{
          "Version": "1",
          "Statement": [
            {
                      "Action": "apigateway:*",
                      "Resource": [
                              "acs:apigateway:$regionid:$accountid:apigroup/$groupId",
                              "acs:apigateway:$regionid:$accountid:app/$appId",
                              "acs:apigateway:$regionid:$accountid:vpcaccess/*"
                      ],
                      "Effect": "Allow"
            }
          ]
}

注: 上記の例では、ビジネス要件に基づいて変数にワイルドカード文字 (*) を指定できます。