Para executar jobs do Spark no AnalyticDB for MySQL, o usuário do Resource Access Management (RAM) precisa de três tipos de permissão: uma política do RAM que conceda acesso ao cluster, permissões de leitura e gravação em bancos de dados e tabelas do AnalyticDB for MySQL e a função de serviço AliyunADBSparkProcessingDataRole. Essa função permite que o Spark acesse outros recursos da nuvem, como Object Storage Service (OSS) e Tablestore. Este tópico explica como configurar a função de serviço para cenários de mesma conta e entre contas.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster do AnalyticDB for MySQL (Enterprise Edition, Basic Edition ou Data Lakehouse Edition).
Uma das seguintes políticas do RAM concedida ao usuário do RAM:
AliyunADBFullAccessouAliyunADBDeveloperAccess.Permissões de leitura e gravação em bancos de dados e tabelas do AnalyticDB for MySQL vinculados por meio de uma conta de banco de dados. Para mais detalhes, consulte Vincular ou desvincular uma conta de banco de dados de um usuário do RAM.
Escolha um método de autorização
Dois métodos estão disponíveis para autorização na mesma conta. Analise as diferenças antes de iniciar.
|
Método |
Permissões concedidas |
Segurança |
|
Console do RAM (recomendado) |
Apenas as políticas especificadas |
Menor privilégio |
|
Autorização rápida |
|
Ampla por padrão — reduza as permissões posteriormente |
Autorização na mesma conta
Como funciona
Crie uma função do RAM com Trusted Entity Type definido como Alibaba Cloud Service e Select Trusted Service definido como Cloud-native Data Warehouse AnalyticDB For MySQL.
Anexe apenas as políticas necessárias aos seus jobs do Spark.
Referencie o ARN da função no parâmetro
spark.adb.roleArnao enviar um job.
Conceder permissões no console do RAM (recomendado)
Etapa 1: Criar uma função do RAM e conceder permissões
-
Crie uma função do RAM.
Na página Create Role, defina Trusted Entity Type como Alibaba Cloud Service e Select Trusted Service como Cloud-native Data Warehouse AnalyticDB For MySQL. Clique em OK.
Na caixa de diálogo Create Role, insira um Role Name e clique em OK.
Ignore esta etapa se já existir uma função do RAM com Trusted Entity Type definido como Alibaba Cloud Service e Select Trusted Service definido como Cloud-native Data Warehouse AnalyticDB For MySQL .
ImportanteAnote o nome da função. Você precisará referenciá-lo no parâmetro
spark.adb.roleArnna Etapa 2.
-
Conceda permissões à função do RAM.
Clique em Precise Authorization.
No painel Precise Authorization, defina o tipo de política como System Policy ou Custom Policy e insira o nome da política. Para restringir o acesso a recursos específicos da nuvem, crie uma política personalizada. Para mais detalhes, consulte Criar uma política de permissão personalizada.
Clique em OK.
Etapa 2: Enviar um job do Spark
Após criar a função, referencie-a no parâmetro spark.adb.roleArn na configuração do seu job do Spark:
{
"comments": [
"-- Here is just an example of using LakeCache. Modify the content and run your spark program."
],
"args": ["oss://testBucketName/data/readme.txt"],
"name": "spark-oss-test",
"file": "oss://testBucketName/data/example.py",
"conf": {
"spark.adb.lakecache.enabled": "true",
"spark.adb.roleArn": "acs:ram::testAccountID:role/adbtest"
}
}
Autorização rápida
A autorização rápida concede a política AliyunADBSparkProcessingDataRolePolicy à função AliyunADBSparkProcessingDataRole por padrão. Essa política inclui acesso amplo ao OSS, Tablestore, DMS e outros recursos, o que pode exceder as necessidades reais dos seus jobs. Após a autorização, desanexe a política AliyunADBSparkProcessingDataRolePolicy e conceda à função apenas as permissões necessárias para seus jobs. Consulte também Revogar permissões de uma função do RAM.
-
Clique no link de autorização rápida.
Apenas usuários com permissões de gerenciamento de usuários do RAM podem usar a autorização rápida. No mínimo, são necessárias permissões para criar funções do RAM, criar políticas do RAM, consultar funções do RAM e consultar políticas do RAM.
No canto inferior esquerdo, clique em Agree To Authorize.
O AnalyticDB for MySQL cria automaticamente a função de serviço AliyunADBSparkProcessingDataRole e a utiliza para acessar outros recursos da nuvem.
Autorização entre contas
Utilize este fluxo quando seu cluster do AnalyticDB for MySQL (conta A) precisar acessar recursos da nuvem pertencentes a outra conta da Alibaba Cloud (conta B).
Exemplo: A conta A (UID: testAccountIDA) precisa ler dados da conta B (UID: testAccountIDB).
Como funciona
A conta B cria uma função do RAM e configura sua política de confiança para permitir que o serviço Spark da conta A a assuma.
A conta A cria um usuário do RAM e concede a ele a permissão
ram:PassRole.Ao enviar um job do Spark, referencie o ARN da função da conta B em
spark.adb.roleArn.
Etapa 1: Criar uma função do RAM para a conta B e conceder permissões
Execute as etapas a seguir usando a conta B ou um administrador do RAM da conta B.
-
Crie uma função do RAM e permita que a conta A a assuma.
Faça login no console do RAM usando a conta B da Alibaba Cloud ou um administrador do RAM da conta B.
No painel de navegação à esquerda, escolha Identity Management > Roles.
Na página Roles, clique em Create Role.
Na página Create Role, defina Trusted Entity Type como Alibaba Cloud Account, especifique a conta e clique em OK.
-
Configure a função:
Role Name: Insira um nome, como
admin-oss.Note (opcional): Insira uma descrição.
Other Alibaba Cloud Account: Selecione Other Alibaba Cloud Account e insira o UID da conta A (
testAccountIDA).
Clique em Finish.
Ignore esta etapa se já existir uma função do RAM que permita à conta A assumi-la. Anote o ARN da função, pois será necessário na Etapa 2.
ImportanteAnote o ARN da função exibido na página de detalhes da função. O formato é
acs:ram::<testAccountIDB>:role/<role-name>. Referencie esse valor no parâmetrospark.adb.roleArn. -
Conceda permissões à função do RAM.
Clique em Precise Authorization.
-
No painel Precise Authorization, defina o tipo de política como System Policy ou Custom Policy e insira o nome da política.
Acessar o OSS
AliyunOSSReadOnlyAccess: Concede permissões somente leitura no OSS.AliyunOSSFullAccess: Concede controle total sobre o OSS. Conceda essa permissão à função do RAM para executar operações de atualização de dados, como INSERT, em tabelas externas do OSS.
Acessar recursos da VPC
Para acessar recursos em uma VPC específica, crie uma política personalizada. No parâmetro
Resourceda política, especifique o grupo de segurança e o vSwitch aos quais os recursos pertencem. Para mais informações, consulte Criar uma política de permissão personalizada.Este exemplo concede permissões para acessar apenas uma instância do ApsaraDB RDS for MySQL em uma VPC específica. O nome da política personalizada é
eni_policy. O código a seguir mostra o documento da política:NotaAdicione um grupo de segurança à instância do ApsaraDB RDS for MySQL. As regras de entrada e saída do grupo de segurança devem permitir acesso na porta da instância do ApsaraDB RDS for MySQL.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "acs:ecs:*:*:securitygroup/<The ID of the security group to which the RDS instance belongs>" }, { "Effect": "Allow", "Action": "vpc:*", "Resource": "acs:vpc:*:*:vswitch/<The ID of the vSwitch to which the RDS instance belongs>" } ] } Clique em OK.
Clique em Close.
-
Atualize a política de confiança para permitir que o serviço Spark da conta A assuma a função.
No painel de navegação à esquerda, escolha Identity Management > Roles.
Na página Roles, clique no nome da função criada.
Na aba Trust Policy, clique em Edit Trust Policy.
-
Substitua o documento da política pelo seguinte e clique em OK:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::testAccountIDA:root" ] } }, { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "testAccountIDA@ads.aliyuncs.com" ] } } ], "Version": "1" }Substitua
testAccountIDApelo UID real da conta A.
Etapa 2: Criar um usuário do RAM para a conta A e conceder permissões
Execute as etapas a seguir usando a conta A ou um administrador do RAM da conta A.
-
Crie um usuário do RAM.
-
Na seção User Account Information, configure os seguintes parâmetros:
Parâmetro
Descrição
Logon Name
Até 64 caracteres. Caracteres permitidos: letras, dígitos, pontos (
.), hifens (-) e sublinhados (_).Display Name
Até 128 caracteres.
Tag (opcional)
Clique no ícone de edição e insira uma chave e um valor de tag para ajudar a gerenciar o usuário.
NotaClique em Add User para criar vários usuários do RAM simultaneamente.
Na seção Access Mode, selecione Console Password Logon e configure a senha de login, a política de redefinição de senha e as configurações de autenticação multifator (MFA) conforme necessário. Para mais detalhes, consulte Acesso ao console.
Clique em OK.

-
-
Crie uma política de permissão que permita ao usuário do RAM passar funções.
No painel de navegação à esquerda, escolha Permission Management > Policies.
Na página Policies, clique em Create Policy.
Na página Create Policy, clique na aba Script Editor.
-
Insira o seguinte documento de política e clique em OK:
{ "Version": "1", "Statement": [ { "Action": "ram:PassRole", "Resource": "*", "Effect": "Allow" } ] } Na caixa de diálogo Create Policy, insira um Policy Name e uma Note opcional e clique em OK.
-
Conceda a política ao usuário do RAM.
No painel de navegação à esquerda, escolha Identity Management > Users.
Na página Users, localize o usuário do RAM e clique em Add Permissions na coluna Actions.
No painel Add Permissions, selecione a política criada na etapa anterior.
Clique em OK e, em seguida, clique em Close.