Acesse o Hologres assumindo uma função do RAM por meio de logon único (SSO) baseado em funções.
Informações básicas
Usuários corporativos da Alibaba Cloud geralmente fazem logon no console com nome de usuário e senha. Com o aumento das exigências de segurança, muitas empresas preferem o SSO baseado em funções para centralizar a autenticação. Para mais informações, consulte Visão geral do SSO de função baseado em SAML.
Cenários
Para atender a regulamentações de segurança mais rigorosas e centralizar a autenticação, as empresas costumam adotar o SSO. Esse recurso permite aos usuários fazer logon uma única vez e acessar todos os aplicativos confiáveis. O Hologres oferece suporte ao SSO baseado em funções. Para mais informações, consulte Visão geral do SSO de função baseado em SAML. Com ele, use sua conta corporativa para assumir uma função do RAM e acessar uma instância do Hologres. A função do RAM controla as permissões de acesso. 
-
O usuário abre um navegador e selecione a Alibaba Cloud como service de destino na página de logon do provedor de identidade (IdP).
Por exemplo, se o IdP da sua empresa for o Microsoft Active Directory Federation Services (AD FS), a URL de logon será https:///adfs/ls/IdpInitiatedSignOn.aspx.
NotaAlguns IdPs exigem que os usuários façam logon antes de selecione o aplicativo SSO que representa a Alibaba Cloud.
O IdP gera uma resposta SAML e a retorna ao navegador.
O navegador redireciona o usuário para a página do service SSO e encaminha a resposta SAML a esse service.
-
O service SSO utiliza a resposta SAML para solicitar credenciais de segurança temporárias ao Security Token Service (STS) da Alibaba Cloud e gera uma URL de logon para o Console de Gerenciamento da Alibaba Cloud.
NotaSe a resposta SAML contiver atributos mapeados para várias funções do RAM, o sistema solicitará que o usuário selecione uma função para acessar a Alibaba Cloud.
O service SSO retorna a URL ao navegador.
O navegador redireciona para a URL e realiza o logon do usuário no Console de Gerenciamento da Alibaba Cloud com a função do RAM especificada. Em seguida, o usuário acessa a instância do Hologres assumindo essa função.
Métodos de acesso compatíveis com o Hologres
O Hologres é compatível com os dois métodos de acesso a seguir:
-
Acesso ao Hologres com uma conta cloud (uma conta da Alibaba Cloud ou um usuário do RAM).
Faça logon no Console de Gerenciamento da Alibaba Cloud insira nome de usuário e senha e use o Hologres como a conta atual. Nesse caso, a conta da Alibaba Cloud torna-se membro de uma instância do Hologres com permissões para utilizar o service.
-
Logon no Hologres com SSO baseado em funções.
Também é possível fazer logon na Alibaba Cloud com SSO baseado em funções (Visão geral do SSO de função baseado em SAML) e utilizar o Hologres. Nessa situação, a função do RAM torna-se membro de uma instância do Hologres. Os usuários que assumem essa função do RAM possuem as mesmas permissões dos membros que utilizam contas da Alibaba Cloud. Para mais informações sobre funções do RAM, consulte Visão geral de funções do RAM.
No Hologres, uma função do RAM equivale a uma conta da Alibaba Cloud (seja uma conta raiz ou um usuário do RAM). Portanto, a função do RAM é considerada uma conta de logon padrão. Um superusuário deve conceder permissões, como SELECT, INSERT ou UPDATE, diretamente à função do RAM, e não à conta subjacente da Alibaba Cloud. Assim, a função do RAM poderá usar o Hologres dentro do escopo das permissões concedidas.
SSO baseado em funções (STS)
O SSO baseado em funções para o Hologres utiliza o Security Token Service (STS) da Alibaba Cloud. O STS emite credenciais de segurança temporárias com períodos de validade e permissões personalizados para usuários gerenciados pelo seu sistema de identidade local. Os usuários podem usar essas credenciais para se conectar diretamente ao Hologres e acessar os recursos autorizados.
Os tokens do STS oferecem os seguintes benefícios:
Redução do risco de exposição do seu par de AccessKey. Basta gerar credenciais temporárias para os usuários.
Controle flexível de permissões. Os tokens do STS expiram automaticamente após um período de validade limitado, eliminando a necessidade de revogar permissões manualmente.
Siga estas etapas para crie uma função do RAM e conceder a ela permissões de acesso ao Hologres.
Etapa 1: Criar uma função do RAM
Faça logon no console do Resource Access Management (RAM) para crie uma função do RAM. Como tipo de principal, selecione Alibaba Cloud Account ou Identity Provider.
Caso precise alternar identidades no Console de Gerenciamento da Alibaba Cloud para assumir a função, crie uma função com o tipo de principal Alibaba Cloud Account. Para mais informações, consulte Assumir uma função como usuário do RAM e conceder permissões.
Se for necessário fazer logon na Alibaba Cloud com uma conta de IdP local para assumir a função, crie uma função com o tipo de principal Identity Provider. Para mais informações, consulte Assumir uma função como usuário do IdP e conceder permissões.
Assumir uma função como usuário do RAM
Se você precisar que um usuário do RAM assuma uma função do RAM alternando identidades no Console de Gerenciamento da Alibaba Cloud, faça logon no console do Resource Access Management (RAM) e crie uma função do RAM. Como tipo de principal, selecione Alibaba Cloud Account.
-
Crie uma função do RAM cujo tipo de principal seja Alibaba Cloud Account.
Faça logon no console do Resource Access Management (RAM). No painel de navegação à esquerda, escolha Identities > Roles.
Na página Create Role, clique em Create Role. Em Principal Type, selecione Alibaba Cloud Account. Em Principal Name, selecione Current Account. Clique em OK.
Na caixa de diálogo Create Role, insira um Role Name e clique em OK para crie a função.
-
Crie e anexe uma política de permissões.
Na página de gerenciamento de funções do RAM, clique em no nome da função desejada para visualize sua página de detalhes.
-
Clique em na aba Trust Policy. Clique em Edit Trust Policy e substitua a política pelo script a seguir.
-
Descrição dos parâmetros
Ao configure a política, na string
acs:ram::root_account_ID:root, substituaroot_account_IDpelo ID da conta que você deseja autorizar. Acesse a página Informações do Usuário para obter o ID da conta. -
Exemplo de política
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::
-
Clique em OK para salve a política de confiança.
-
Crie um usuário do RAM e conceda a ele permissões para assumir uma função.
Para assumir uma função do RAM como usuário do RAM, é necessário crie um usuário do RAM e conceder a ele permissão para assumir funções.
Faça logon no console do Resource Access Management (RAM). No painel de navegação à esquerda, escolha .
(Opcional) Se você já possui um usuário do RAM, pule esta etapa. Clique em Create User para crie um ou mais usuários do RAM. Para mais informações, consulte Criar um usuário do RAM.
Clique em Add Permissions na coluna Actions do usuário do RAM desejado.
Na página Add Permissions, conceda a permissão
AliyunSTSAssumeRoleAccessao usuário do RAM para permitir que ele chame a operaçãoAssumeRoleda API do STS. Na seção de permissões, clique em na aba System Policy, pesquise e selecione a política AliyunSTSAssumeRoleAccess.Clique em OK para concluir a configuração.
Assumir uma função como usuário do IdP
Caso precise fazer logon na Alibaba Cloud com uma conta de IdP local para assumir uma função do RAM, faça logon no console do Resource Access Management (RAM) e crie uma função do RAM. Como tipo de principal, selecione Identity Provider.
-
Crie uma função do RAM cujo tipo de principal seja Identity Provider.
Faça logon no console do Resource Access Management (RAM). No painel de navegação à esquerda, escolha Identities > Role.
Na página Role, clique em Create Role. Em Principal Type, selecione Identity Provider.
Clique em OK. Configure os parâmetros Role Name e Note.
Selecione um IdP Type e um Select IdP. Revise as condições e clique em Complete. Uma mensagem aparecerá indicando que a função foi criada.
-
Crie e anexe uma política de permissões.
Na página de lista de funções, clique em no nome da função desejada para visualize sua página de detalhes.
-
Clique em na aba Trust Policy. Clique em Edit Trust Policy e substitua a política pelo script a seguir.
-
Descrição dos parâmetros
Ao configure uma política, substitua
RootAccountIDno scriptacs:ram::RootAccountID:saml-provider/IDPpelas informações da conta que você deseja autorizar. Acesse a página Informações do Usuário para obter o ID da conta. -
Exemplo de política
{ "Statement": [ { "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "saml:recipient": "https://signin.aliyun.com/saml-role/sso" } }, "Effect": "Allow", "Principal": { "Federated": [ "acs:ram::
-
Clique em OK para salve a política de confiança.
Etapa 2: Adicionar e autorizar a função do RAM
Uma função do RAM precisa ter permissões de desenvolvimento em uma instância do Hologres antes de poder utilizá-lo. Por padrão, uma função do RAM não consegue visualizar ou gerencie instâncias no console do Hologres. Portanto, a conta raiz deve primeiro conceder as permissões necessárias no RAM. Para mais informações, consulte Conceder permissões a um usuário do RAM. Adicione a função do RAM a uma instância do Hologres e conceda permissões usando um dos métodos a seguir.
-
Faça logon no console do Hologres para conceder permissões.
No painel de navegação à esquerda, acesse a página Instances. Clique em na instância à qual deseja conceder permissões. Na aba User Management , localize a função do RAM e adicione-a como um novo usuário à instância.
Na aba Database Authorization, conceda as permissões de desenvolvimento de instância necessárias à função do RAM.
-
Conceda permissões usando instruções SQL.
É possível conceder permissões por meio de instruções SQL. Para mais informações, consulte Visão geral do gerenciamento de permissões.
Quando um usuário do RAM assume uma função do RAM, a função não tem permissões para visualize o console do Hologres por padrão. A conta raiz deve conceder a permissão AliyunRAMReadOnlyAccess ao usuário do RAM no console do RAM. Caso contrário, a função não poderá realizar nenhuma operação no console do Hologres. Para mais informações, consulte Conceder permissões a um usuário do RAM.
Etapa 3: Fazer logon e usar o Hologres
Logon no Console e HoloWeb
Após a concessão das permissões, os usuários podem assumir a função do RAM para fazer logon e usar o Hologres.
Assuma a função do RAM para fazer logon no console do Hologres e gerencie suas instâncias do Hologres.
Na página do console do Hologres, clique em Go to HoloWeb no painel de navegação à esquerda para abrir a página do HoloWeb. Em seguida, projete esquemas e desenvolva dados. Para mais informações, consulte Conectar-se ao HoloWeb e execute uma consulta.
Logon com cliente JDBC e psql
O Hologres V2.0 e versões posteriores permitem especifique um token de segurança nas opções de conexão do protocolo PostgreSQL para acessar o Hologres como uma função do RAM a partir de um cliente PostgreSQL, como JDBC ou psql.
Antes de se conectar, certifique-se de que os seguintes pré-requisitos foram atendidos:
Você adicionou a função do RAM à instância do Hologres e concedeu permissões. Para mais informações, consulte Etapa 2: Adicionar a função do RAM a uma instância do Hologres e conceder permissões.
-
Você chamou a operação de API AssumeRole - Obter credenciais de segurança temporárias para assumir uma função no Resource Access Management (RAM) para obter o trio de tokens do STS: um AccessKey ID, um AccessKey Secret e um token de segurança. Para mais informações, consulte Exemplos de chamada do SDK do STS. O código a seguir mostra um exemplo de token do STS:
"Credentials": { "SecurityToken": "CAISuwJ1q6Ft5B2yu****KiAA", "AccessKeyId": "STS.NTKaenSkmLhG4HpM5****76UV", "AccessKeySecret": "6itECZnhbG2RU6ktTSBSd6JxeLHKPWyBt****SS62", "Expiration": "2025-02-21T03:47:07Z" }
Após concluir esses pré-requisitos, conecte-se ao Hologres de uma das seguintes maneiras.
-
Conexão via JDBC (Java): Para mais informações, consulte Conectar-se ao Hologres usando JDBC.
-
Exemplo 1: Carregue o trio de tokens do STS usando as propriedades da classe PGProperty do driver JDBC do PostgreSQL para concluir a verificação de identidade.
import org.postgresql.PGProperty; import java.sql.*; import java.io.IOException; import java.util.Properties; public class JdbcLinkHologres1 { public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException { // This example shows how to store the AccessKey ID and AccessKey Secret in environment variables. You can also store them in a configuration file based on your business needs. // To prevent key leakage, do not hard-code the AccessKey ID and AccessKey Secret in your code. String accessKeyId = "ALIBABA_CLOUD_ACCESS_KEY_ID"; String accessKeySecret = "ALIBABA_CLOUD_ACCESS_KEY_SECRET"; String securityToken = "<SecurityToken>"; String url = "jdbc:postgresql://<host>:<port>/<database>"; Properties props = new Properties(); PGProperty.USER.set(props, accessKeyId); PGProperty.PASSWORD.set(props, accessKeySecret); PGProperty.OPTIONS.set(props, "sts_token=" + securityToken); Class.forName("org.postgresql.Driver"); Connection connection = DriverManager.getConnection(url, props); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM tabletest"); // Process the resultSet while (resultSet.next()) { System.out.println("Result: " + resultSet.getInt(1)); System.out.println("Result: " + resultSet.getString(2)); } } } -
Exemplo 2: Codifique o token de segurança em formato URL, anexe-o à URL JDBC e carregue o AccessKey ID e o AccessKey Secret quando a classe do driver estabelecer a conexão com o Hologres para concluir a verificação de identidade.
import java.net.URLEncoder; import java.sql.*; import java.io.IOException; public class JdbcLinkHologres2 { public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException { // This example shows how to store the AccessKey ID and AccessKey Secret in environment variables. You can also store them in a configuration file based on your business needs. // To prevent key leakage, do not hard-code the AccessKey ID and AccessKey Secret in your code. String accessKeyId = "ALIBABA_CLOUD_ACCESS_KEY_ID"; String accessKeySecret = "ALIBABA_CLOUD_ACCESS_KEY_SECRET"; String securityToken = "<SecurityToken>"; String url = "jdbc:postgresql://<host>:<port>/<database>"; String urlWithOptions = url + "?options=sts_token=" + URLEncoder.encode(securityToken, "UTF-8"); Class.forName("org.postgresql.Driver"); Connection connection = DriverManager.getConnection(urlWithOptions, accessKeyId, accessKeySecret); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM tabletest"); // Process the resultSet while (resultSet.next()) { System.out.println("Result: " + resultSet.getInt(1)); System.out.println("Result: " + resultSet.getString(2)); } } }
-
-
Conexão com cliente psql: O comando a seguir destina-se a sistemas Linux. Para mais informações, consulte Conectar-se ao Hologres usando um cliente psql.
PGUSER=<AccessKeyId> PGPASSWORD=<AccessKeySecret> PGOPTIONS="sts_token=<SecurityToken>" psql -h <host> -p <port> -d <database>
Perguntas frequentes
O que devo fazer se receber o erro password authentication failed for user "<AccessKeyId>" ao fazer logon como uma função do RAM?
Esse erro indica que o AccessKey ID, o AccessKey Secret ou o token de segurança está incorreto, ou que o usuário não existe na instância do Hologres. Verifique os seguintes itens:
Verifique se o usuário existe na instância. Caso não exista, adicione a função do RAM à instância. Para mais informações, consulte Etapa 2: Adicionar a função do RAM a uma instância do Hologres e conceder permissões.
Confira se o token de segurança foi transmitido corretamente. Se você o transmitir na URL, será necessário codificá-lo usando
URLEncoder.encode.Valide se o AccessKey ID, o AccessKey Secret e o token de segurança estão corretos.