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コンソールにログインして、[ポリシー] ページでこれらのポリシーを表示できます。
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"
}
]
}
注: 上記の例では、ビジネス要件に基づいて変数にワイルドカード文字 (*) を指定できます。