Use o Resource Access Management (RAM) para conceder permissões específicas a diferentes colaboradores sobre recursos do API Gateway, como grupos de APIs, APIs, plug-ins e aplicativos.
Caso não precise gerenciar permissões para APIs, ignore este tópico.
Usuários RAM podem visualizar, criar ou excluir grupos de APIs, APIs ou plug-ins no API Gateway. Eles não são proprietários desses recursos — a conta Alibaba Cloud pode revogar suas permissões a qualquer momento.
A autorização baseada em tags permite isolar recursos entre a conta Alibaba Cloud e os usuários RAM.
Antes de gerenciar permissões de API com o RAM, familiarize-se com os serviços RAM e API Gateway. O Centro de Ajuda da Alibaba Cloud oferece documentação detalhada sobre ambos para auxiliar no seu aprendizado.
Visão geral das políticas
Uma política define permissões por meio de quatro elementos: Effect, Resource, Action e Condition.
1. Política do sistema
O API Gateway disponibiliza duas políticas de sistema integradas. Visualize-as na página Policies do RAM console. 
AliyunApiGatewayFullAccess: concede permissões totais de gerenciamento sobre todos os recursos do API Gateway, incluindo grupos de APIs, APIs, políticas de limitação e aplicativos.
AliyunApiGatewayReadOnlyAccess: concede acesso somente leitura a todos os recursos do API Gateway, incluindo grupos de APIs, APIs, políticas de limitação e aplicativos. No entanto, o usuário RAM não pode gerenciar esses recursos.
2. Política personalizada
Crie uma política personalizada para conceder permissões mais granulares sobre ações ou recursos específicos. Por exemplo, crie uma política personalizada para conceder permissões de edição na operação GetUsers. Para visualizar suas políticas personalizadas, faça login no RAM console, escolha Permissions > Policies e selecione Custom Policy na lista suspensa Policy Type.
Sintaxe da política
Uma política utiliza uma sintaxe específica para definir permissões. Anexe uma política a um usuário ou grupo para conceder permissões sobre recursos específicos.
Exemplo:
{
"Version": "1",
"Statement": [
{
"Action": "apigateway:Describe*",
"Resource": "*",
"Effect": "Allow"
}
]
}
Esta política permite que um usuário RAM consulte todos os recursos do API Gateway.
O elemento Action descreve uma ou mais operações de API. Especifique os parâmetros no elemento Action no seguinte formato:
"Action":"<service-name>:<action-name>"
Parâmetros:
service-name: nome do serviço da Alibaba Cloud. Defina como apigateway para o API Gateway.
-
action-name: nome de uma operação de API. Suporta o caractere curinga (*). A seção "Sintaxe de recurso" lista todas as operações disponíveis.
Se você definir "Action" como "apigateway:Describe*", o usuário RAM autorizado terá permissão para consultar todos os recursos no API Gateway.
Se você definir "Action" como "apigateway:*", o usuário RAM autorizado terá permissão para gerenciar todos os recursos no API Gateway.
Sintaxe de recurso
O elemento Resource especifica os objetos abrangidos por uma instrução. No API Gateway, especifique grupos de APIs, políticas de limitação e aplicativos. Use o seguinte formato:
acs:<service-name>:<region>:<account-id>:<relative-id>
Parâmetros:
acs: namespace da nuvem pública da Alibaba Cloud.
service-name: nome do serviço da Alibaba Cloud. Defina como apigateway para o API Gateway.
region: região onde a política se aplica. Use o curinga (*) para todas as regiões.
account-id: ID da conta, como 123456789012****. Suporta o curinga (*).
relative-id: identificador do recurso, especificado em formato semelhante a um caminho de arquivo.
Um RDPath segue um dos formatos abaixo:
acs:apigateway:$regionid:$accountid:apigroup/$groupId
Exemplo:
acs:apigateway:*:*:apigroup/cbd157704e624ab58a204fd3e0b5ad79
A tabela a seguir lista as operações de API disponíveis para o parâmetro action-name nas políticas do API Gateway. Para mais informações, consulte "Referência da API do API Gateway".
|
action-name |
Description |
Resource |
|
CreateApiGroup |
Cria um grupo de APIs. |
acs:apigateway:$regionid:$accountid:apigroup/* |
|
ModifyApiGroup |
Modifica um grupo de APIs. |
acs:apigateway:$regionid:$accountid:apigroup/$groupId |
|
DeleteApiGroup |
Exclui um grupo de APIs. |
acs:apigateway:$regionid:$accountid:apigroup/$groupId |
|
DescribeApiGroups |
Consulta grupos de APIs. |
acs:apigateway:$regionid:$accountid:apigroup/* |
|
CreateApi |
Cria uma API. |
acs:apigateway:$regionid:$accountid:apigroup/$groupId |
|
DeployApi |
Publica uma API. |
acs:apigateway:$regionid:$accountid:apigroup/$groupId |
|
AbolishApi |
Despublica uma API. |
acs:apigateway:$regionid:$accountid:apigroup/$groupId |
|
DeleteApi |
Exclui uma API. |
acs:apigateway:$regionid:$accountid:apigroup/$groupId |
|
DescribeApis |
Consulta APIs. |
acs:apigateway:$regionid:$accountid:apigroup/* |
|
CreatePlugin |
Cria um plug-in. |
acs:apigateway:$regionid:$accountid:plugin/* |
|
ModifyPlugin |
Modifica um plug-in. |
acs:apigateway:$regionid:$accountid:plugin/$pluginId |
|
DeletePlugin |
Exclui um plug-in. |
acs:apigateway:$regionid:$accountid:plugin/$pluginId |
|
AttachPlugin |
Vincula um plug-in a uma API. |
acs:apigateway:$regionid:$accountid:plugin/$pluginId |
|
DetachPlugin |
Desvincula um plug-in de uma API. |
acs:apigateway:$regionid:$accountid:plugin/$pluginId |
|
DescribePluginsByApi |
Consulta plug-ins vinculados a uma API. |
acs:apigateway:$regionid:$accountid:plugin/$pluginId |
|
CreateApp |
Cria um aplicativo. |
acs:apigateway:$regionid:$accountid:app/* |
|
ModifyApp |
Modifica um aplicativo. |
acs:apigateway:$regionid:$accountid:app/$appId |
|
DeleteApp |
Exclui um aplicativo. |
acs:apigateway:$regionid:$accountid:app/$appId |
|
DescribeAppAttributes |
Consulta aplicativos. |
acs:apigateway:$regionid:$accountid:app/$appId |
|
SetApisAuthorities |
Autoriza um aplicativo a chamar APIs. |
acs:apigateway:$regionid:$accountid:apigroup/$groupId |
|
DescribeAuthorizedApps |
Consulta aplicativos autorizados a chamar uma API. |
acs:apigateway:$regionid:$accountid:apigroup/$groupId |
|
SetVpcAccess |
Cria uma autorização de acesso à Virtual Private Cloud (VPC). |
acs:apigateway:$regionid:$accountid:vpcaccess/* |
|
RemoveVpcAccess |
Exclui uma autorização de acesso à VPC. |
acs:apigateway:$regionid:$accountid:vpcaccess/* |
|
DescribeVpcAccesses |
Consulta autorizações de acesso à VPC. |
acs:apigateway:$regionid:$accountid:vpcaccess/* |
|
DescribeInstances |
Consulta instâncias dedicadas. |
acs:apigateway:$regionid:$accountid:instance/$instanceId |
Exemplos
Autorizar um usuário RAM a consultar todas as APIs:
{
"Version": "1",
"Statement": [
{
"Action": "apigateway:Describe*",
"Resource":"acs:apigateway:$regionid:$accountid:apigroup/*",
"Effect": "Allow"
}
]
}
Autorizar um usuário RAM a consultar todos os grupos de APIs aos quais a tag version:v1 está anexada:
{
"Version": "1",
"Statement": [
{
"Action": "apigateway:Describe*",
"Resource":"acs:apigateway:$regionid:$accountid:apigroup/*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"apigateway:tag/version": "v1"
}
}
}
]
}
Autorizar um usuário RAM a gerenciar todas as APIs em um grupo de APIs:
{
"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"
}
]
}
Observação: Nos exemplos anteriores, especifique o caractere curinga (*) para as variáveis conforme as necessidades do seu negócio.