O Elasticsearch usa funções vinculadas a serviço (SLRs) para acessar outros serviços da Alibaba Cloud quando você acessa o Kibana ou clusters por uma VPC via PrivateLink, gerencia shippers do Beats, trabalha com snapshots manuais ou utiliza o dimensionamento elástico para clusters ES. O Elasticsearch cria essas funções automaticamente caso não existam. Este tópico aborda as SLRs do Elasticsearch e do ES Serverless e explica como excluí-las.
, ou use dimensionamento elástico para clusters ES
e ES Serverless
Cenários
O Elasticsearch usa as seguintes funções vinculadas a serviço:
AliyunServiceRoleForElasticsearch: necessária para acessar o Kibana ou um nó de cluster do Elasticsearch implantado na arquitetura de controle nativa da nuvem pela sua VPC.
AliyunServiceRoleForElasticsearchCollector: necessária para criar e gerenciar shippers do Beats.
AliyunServiceRoleForElasticsearchOSS: necessária para criar ou restaurar snapshots manuais. Concede ao Elasticsearch acesso aos buckets do OSS.
O tópico Funções vinculadas a serviço explica o funcionamento das SLRs.
Detalhes das funções
AliyunServiceRoleForElasticsearch
Ao acessar o Kibana ou um nó de cluster do Elasticsearch implantado na arquitetura de controle nativa da nuvem pela sua VPC, o Elasticsearch cria essa SLR automaticamente se ela ainda não existir. Em seguida, o serviço assume a função para chamar as APIs do PrivateLink e do ECS, criando endpoints e configurações de rede para acesso à VPC.
Nome da função: AliyunServiceRoleForElasticsearch
Nome da política: AliyunServiceRolePolicyForElasticsearch
Documento da política (a política a seguir aplica-se às regiões China (Pequim), China (Xangai), China (Hangzhou), China (Shenzhen), China (Zhangjiakou) e China (Qingdao); as demais regiões mantêm a política original):
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:AssignIpv6Addresses",
"ecs:AssignPrivateIpAddresses",
"ecs:AttachNetworkInterface",
"ecs:AuthorizeSecurityGroup",
"ecs:AuthorizeSecurityGroupEgress",
"ecs:CreateNetworkInterface",
"ecs:CreateNetworkInterfacePermission",
"ecs:CreateSecurityGroup",
"ecs:DeleteNetworkInterface",
"ecs:DeleteSecurityGroup",
"ecs:DescribeInstanceAttribute",
"ecs:DescribeInstances",
"ecs:DescribeNetworkInterfaceAttribute",
"ecs:DescribeNetworkInterfaces",
"ecs:DescribeSecurityGroupAttribute",
"ecs:DescribeSecurityGroupReferences",
"ecs:DescribeSecurityGroups",
"ecs:DetachNetworkInterface",
"ecs:JoinSecurityGroup",
"ecs:LeaveSecurityGroup",
"ecs:ModifyNetworkInterfaceAttribute",
"ecs:ModifySecurityGroupAttribute",
"ecs:ModifySecurityGroupEgressRule",
"ecs:ModifySecurityGroupPolicy",
"ecs:ModifySecurityGroupRule",
"ecs:RevokeSecurityGroup",
"ecs:RevokeSecurityGroupEgress",
"ecs:UnassignIpv6Addresses",
"ecs:UnassignPrivateIpAddresses"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
{
"Action": [
"elasticsearch:ListInstance",
"elasticsearch:DescribeInstance",
"elasticsearch:RunEsDiagnosticCommand"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
{
"Action": [
"pvtz:AddZone",
"pvtz:AddZoneRecord",
"pvtz:DeleteZone",
"pvtz:DeleteZoneRecord",
"pvtz:DescribeZoneRecords",
"pvtz:UpdateZoneRecord"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
{
"Action": [
"vpc:DescribeVSwitches"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
{
"Action": [
"privatelink:CreateVpcEndpoint",
"privatelink:ListVpcEndpoints",
"privatelink:UpdateVpcEndpointAttribute",
"privatelink:GetVpcEndpointAttribute",
"privatelink:ListVpcEndpointSecurityGroups",
"privatelink:AttachSecurityGroupToVpcEndpoint",
"privatelink:DetachSecurityGroupFromVpcEndpoint",
"privatelink:AddZoneToVpcEndpoint",
"privatelink:RemoveZoneFromVpcEndpoint",
"privatelink:ListVpcEndpointZones",
"privatelink:OpenPrivateLinkService",
"privatelink:CheckProductOpen",
"privatelink:DeleteVpcEndpoint"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"cms:DescribeAlertLogCount",
"cms:DescribeAlertLogList",
"cms:DescribeAlertLogHistogram",
"cms:DescribeSubscriptionList",
"cms:DescribeContactListByContactGroup",
"cms:DescribeContactGroupList",
"cms:DescribeContactList",
"cms:PutContact",
"cms:PutContactGroup",
"cms:DescribeSystemEventHistogram",
"cms:DescribeSystemEventMetaList",
"cms:DescribeSystemEventAttribute",
"cms:DescribeSystemEventCount",
"cms:DescribeMetricList",
"cms:DescribeMetricLast",
"cms:DescribeMetricMetaList",
"cms:DescribeConsoleViews",
"cms:QueryMetricLast",
"cms:QueryMetricList",
"cms:DescribeMetricListFromProxy",
"cms:DescribeMetricLastFromProxy"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "ram:CreateServiceLinkedRole",
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": "privatelink.aliyuncs.com"
}
}
},
{
"Action": "ram:DeleteServiceLinkedRole",
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": "elasticsearch.aliyuncs.com"
}
}
}
]
}
Comparada à política das outras regiões, a política das regiões mencionadas adiciona os seguintes recursos:
Consulta e diagnóstico de instâncias ES: adiciona permissões do elasticsearch (ListInstance, DescribeInstance e RunEsDiagnosticCommand) para consultar e diagnosticar instâncias ES.
Ativação do serviço PrivateLink: inclui permissões do privatelink (OpenPrivateLinkService e CheckProductOpen) para ativar o PrivateLink e verificar o status de ativação do produto.
CloudMonitor: incorpora permissões do cms (21 ações no total) para consultas de logs de alerta, gerenciamento de contatos e grupos de contatos, consultas de eventos do sistema e consultas de dados de métricas.
A seguinte política aplica-se às demais regiões:
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:AssignIpv6Addresses",
"ecs:AssignPrivateIpAddresses",
"ecs:AttachNetworkInterface",
"ecs:AuthorizeSecurityGroup",
"ecs:AuthorizeSecurityGroupEgress",
"ecs:CreateNetworkInterface",
"ecs:CreateNetworkInterfacePermission",
"ecs:CreateSecurityGroup",
"ecs:DeleteNetworkInterface",
"ecs:DeleteSecurityGroup",
"ecs:DescribeInstanceAttribute",
"ecs:DescribeInstances",
"ecs:DescribeNetworkInterfaceAttribute",
"ecs:DescribeNetworkInterfaces",
"ecs:DescribeSecurityGroupAttribute",
"ecs:DescribeSecurityGroupReferences",
"ecs:DescribeSecurityGroups",
"ecs:DetachNetworkInterface",
"ecs:JoinSecurityGroup",
"ecs:LeaveSecurityGroup",
"ecs:ModifyNetworkInterfaceAttribute",
"ecs:ModifySecurityGroupAttribute",
"ecs:ModifySecurityGroupEgressRule",
"ecs:ModifySecurityGroupPolicy",
"ecs:ModifySecurityGroupRule",
"ecs:RevokeSecurityGroup",
"ecs:RevokeSecurityGroupEgress",
"ecs:UnassignIpv6Addresses",
"ecs:UnassignPrivateIpAddresses"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
{
"Action": [
"pvtz:AddZone",
"pvtz:AddZoneRecord",
"pvtz:DeleteZone",
"pvtz:DeleteZoneRecord",
"pvtz:DescribeZoneRecords",
"pvtz:UpdateZoneRecord"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
{
"Action": [
"vpc:DescribeVSwitches"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
{
"Action": [
"privatelink:CreateVpcEndpoint",
"privatelink:ListVpcEndpoints",
"privatelink:UpdateVpcEndpointAttribute",
"privatelink:GetVpcEndpointAttribute",
"privatelink:ListVpcEndpointSecurityGroups",
"privatelink:AttachSecurityGroupToVpcEndpoint",
"privatelink:DetachSecurityGroupFromVpcEndpoint",
"privatelink:AddZoneToVpcEndpoint",
"privatelink:RemoveZoneFromVpcEndpoint",
"privatelink:ListVpcEndpointZones",
"privatelink:DeleteVpcEndpoint"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "ram:CreateServiceLinkedRole",
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": "privatelink.aliyuncs.com"
}
}
},
{
"Action": "ram:DeleteServiceLinkedRole",
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": "elasticsearch.aliyuncs.com"
}
}
}
]
}
Nome do serviço: elasticsearch.aliyuncs.com
Permissão necessária para criar a função: ram:CreateServiceLinkedRole
AliyunServiceRoleForElasticsearchCollector
Ao criar ou gerenciar um shipper do Beats, o Elasticsearch cria essa SLR automaticamente caso ela não exista. O serviço então assume a função para permitir a coleta de dados do Beats a partir de instâncias ECS ou clusters ACK.
Nome da função: AliyunServiceRoleForElasticsearchCollector
Nome da política: AliyunServiceRolePolicyForElasticsearchCollector
-
Documento da política:
{ "Version": "1", "Statement": [ { "Action": [ "oos:CancelExecution", "oos:DeleteExecutions", "oos:GenerateExecutionPolicy", "oos:GetExecutionTemplate", "oos:ListExecutionLogs", "oos:ListExecutions", "oos:ListTaskExecutions", "oos:NotifyExecution", "oos:StartExecution", "oos:ListTagResources", "oos:TagResources", "oos:UntagResources", "oos:CreateTemplate", "oos:DeleteTemplate", "oos:GetTemplate", "oos:ListExecutionRiskyTasks", "oos:ListTemplates", "oos:UpdateTemplate" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ecs:DescribeInstances", "ecs:DescribeCloudAssistantStatus" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "cs:GetUserConfig", "cs:GetClusters", "cs:GetClusterById" ], "Resource": "*", "Effect": "Allow" }, { "Action": "ram:DeleteServiceLinkedRole", "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "ram:ServiceName": "collector.elasticsearch.aliyuncs.com" } } }, { "Effect": "Allow", "Action": "ram:PassRole", "Resource": "acs:ram:*:*:role/aliyunoosaccessingecs4esrole", "Condition": { "StringEquals": { "acs:Service": "oos.aliyuncs.com" } } } ] } Nome do serviço: collector.elasticsearch.aliyuncs.com
Permissão necessária para criar a função: ram:CreateServiceLinkedRole
AliyunServiceRoleForElasticsearchOSS
Ao criar ou restaurar um snapshot manual, o Elasticsearch cria essa SLR automaticamente se ela não existir. O serviço então assume a função para acessar seu bucket do OSS.
Nome da função: AliyunServiceRoleForElasticsearchOSS
Nome da política: AliyunServiceRolePolicyForElasticsearchOSS
Documento da política:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:ListObjects",
"oss:GetObject",
"oss:GetObjectVersion",
"oss:GetObjectVersionTagging",
"oss:GetObjectMeta",
"oss:DeleteObject",
"oss:PutObject",
"oss:GetBucketVersioning",
"oss:GetBucketInfo",
"oss:GetBucketAcl"
],
"Resource": [
"acs:oss:*:*:es-alicloud-*/*",
"acs:oss:*:*:es-alicloud-*",
"acs:oss:*:*:*/*es-alicloud*/*"
]
},
{
"Effect": "Allow",
"Action": [
"oss:ListObjects",
"oss:GetObject",
"oss:GetObjectMeta",
"oss:GetObjectVersion",
"oss:GetObjectVersionTagging",
"oss:DeleteObject",
"oss:PutObject",
"oss:GetBucketVersioning",
"oss:GetBucketInfo",
"oss:GetBucketAcl"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"oss:BucketTag/es-alicloud": [
"es-alicloud"
]
}
}
},
{
"Action": "ram:DeleteServiceLinkedRole",
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": "oss.elasticsearch.aliyuncs.com"
}
}
}
]
}
Nome do serviço: oss.elasticsearch.aliyuncs.com
Permissão necessária para criar a função: ram:CreateServiceLinkedRole
Excluir uma função vinculada a serviço
Antes de excluir uma SLR, remova todas as tarefas ou dispositivos que dependam dessa função. Consulte Excluir uma SLR.
Perguntas frequentes
P: Por que não consigo usar meu usuário RAM para criar uma função vinculada a serviço do Elasticsearch?
R: Apenas contas Alibaba Cloud e usuários RAM com a permissão CreateServiceLinkedRole podem criar ou excluir SLRs. Anexe a seguinte política ao seu usuário RAM (consulte Conceder permissões a usuários RAM):
{
"Version": "1",
"Statement": [
{
"Action": "elasticsearch:InitializeOperationRole",
"Resource": "acs:ram:*:133071096032****:role/*",
"Effect": "Allow"
},
{
"Action": "ram:CreateServiceLinkedRole",
"Resource": "acs:ram:*:133071096032****:role/*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": [
"XXX.aliyuncs.com"
]
}
}
}
]
}
-
Substitua
133071096032****no elemento Resource pelo ID da sua conta Alibaba Cloud.Para encontrar o ID da sua conta, passe o ponteiro do mouse sobre sua foto de perfil no canto superior direito do console e visualize seu Account ID.
-
Substitua
XXX.aliyuncs.comem ram:ServiceName pelo nome do serviço da SLR desejada:AliyunServiceRoleForElasticsearch: elasticsearch.aliyuncs.com
AliyunServiceRoleForElasticsearchCollector: collector.elasticsearch.aliyuncs.com
AliyunServiceRoleForElasticsearchOSS: oss.elasticsearch.aliyuncs.com