Este tópico explica como configurar um provedor de credenciais do OSS/OSS-HDFS.
Configuração básica
Pré-configure o AccessKey ID, o AccessKey secret e o endpoint do OSS ou OSS-HDFS no arquivo core-site.xml do Hadoop. Para definir esses parâmetros em um cluster EMR, siga estas etapas:
Na página de configuração do serviço Hadoop-Common, clique em na aba core-site.xml.
Clique em Add Configuration Item e adicione os itens de configuração fs.oss.accessKeyId e fs.oss.accessKeySecret.
Clique em OK, insira o motivo da execução e clique em OK.
Clique em Save abaixo.
Armazenar AccessKeys com provedores de credenciais do Hadoop
Na configuração básica, fs.oss.accessKeyId e fs.oss.accessKeySecret ficam armazenados em texto simples no arquivo core-site.xml. Armazene-os como um par criptografado em um arquivo de Provedores de Credenciais do Hadoop.
Armazene o AccessKey ID, o AccessKey secret e o token de segurança em um arquivo de credenciais usando o seguinte comando do Hadoop:
hadoop credential <subcommand> [options]
Além das permissões de arquivo, especifique uma senha para criptografar as credenciais. Caso omita a senha, o sistema usará uma string padrão para criptografia.
hadoop credential create fs.oss.accessKeyId -value AAA -provider jceks://file/root/oss.jceks
hadoop credential create fs.oss.accessKeySecret -value BBB -provider jceks://file/root/oss.jceks
hadoop credential create fs.oss.securityToken -value CCC -provider jceks://file/root/oss.jceks
Após gerar o arquivo de credenciais, configure a propriedade a seguir para especificar o tipo e a localização do provedor:
<configuration>
<property>
<name>fs.oss.security.credential.provider.path</name>
<value>jceks://file/root/oss.jceks</value>
<description>Specifies the credential file that stores your access keys. For example, jceks://file/${user.home}/oss.jceks points to the oss.jceks file in your home directory.</description>
</property>
</configuration>
Usar provedores de credenciais do JindoSDK
Por padrão, o JindoSDK vem configurado com SimpleCredentialsProvider, EnvironmentVariableCredentialsProvider e CommonCredentialsProvider. O sistema consulta cada provedor sequencialmente até obter credenciais válidas.
<configuration>
<property>
<name>fs.oss.credentials.provider</name>
<value>com.aliyun.jindodata.oss.auth.SimpleCredentialsProvider,com.aliyun.jindodata.oss.auth.EnvironmentVariableCredentialsProvider,com.aliyun.jindodata.oss.auth.CommonCredentialsProvider</value>
<description>Specifies the com.aliyun.jindodata.oss.auth.JindoCredentialsProvider. To use multiple providers, separate the class names with a comma (,). The system attempts to retrieve credentials from each provider in order. For more information about the providers, see Credential provider types.</description>
</property>
</configuration>
Selecione um provedor de credenciais entre as opções a seguir:
|
Tipo de provedor de credenciais |
Descrição |
|
TemporaryCredentialsProvider |
Acessa o OSS ou OSS-HDFS com AccessKey ID, AccessKey secret e token de segurança temporários. |
|
SimpleCredentialsProvider |
Acessa o OSS ou OSS-HDFS com AccessKey ID e AccessKey secret de longo prazo. |
|
EnvironmentVariableCredentialsProvider |
Recupera credenciais de variáveis de ambiente. |
|
CommonCredentialsProvider |
Obtém credenciais de parâmetros de configuração comuns do Jindo. |
|
CustomCredentialsProvider |
Integra-se a um serviço personalizado sem senha. |
TemporaryCredentialsProvider
-
Configure o tipo de provedor
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.TemporaryCredentialsProvider</value> </property> </configuration> -
Configure as credenciais do OSS ou OSS-HDFS
<configuration> <property> <name>fs.oss.accessKeyId</name> <value>YOUR_ACCESS_KEY_ID</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>YOUR_ACCESS_KEY_SECRET</value> </property> <property> <name>fs.oss.securityToken</name> <value>YOUR_SECURITY_TOKEN</value> </property> </configuration>
SimpleCredentialsProvider
-
Configure o tipo de provedor
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.SimpleCredentialsProvider</value> </property> </configuration> -
Configure as credenciais do OSS ou OSS-HDFS
<configuration> <property> <name>fs.oss.accessKeyId</name> <value>YOUR_ACCESS_KEY_ID</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>YOUR_ACCESS_KEY_SECRET</value> </property> </configuration>
EnvironmentVariableCredentialsProvider
-
Configure o tipo de provedor
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.EnvironmentVariableCredentialsProvider</value> </property> </configuration> -
Configure as credenciais do OSS ou OSS-HDFS
Defina as seguintes variáveis de ambiente:
Parâmetro
Descrição
OSS_ACCESS_KEY_ID
AccessKey ID para OSS ou OSS-HDFS.
OSS_ACCESS_KEY_SECRET
AccessKey secret para OSS ou OSS-HDFS.
OSS_SECURITY_TOKEN
Token de segurança para OSS ou OSS-HDFS.
NotaNecessário apenas ao usar um token temporário.
CommonCredentialsProvider
-
Configure o tipo de provedor
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.CommonCredentialsProvider</value> </property> </configuration> -
Configure as credenciais do OSS ou OSS-HDFS
<configuration> <property> <name>jindo.common.accessKeyId</name> <value>YOUR_ACCESS_KEY_ID</value> </property> <property> <name>jindo.common.accessKeySecret</name> <value>YOUR_ACCESS_KEY_SECRET</value> </property> <property> <name>jindo.common.securityToken</name> <value>YOUR_SECURITY_TOKEN. (Required for time-bound tokens)</value> </property> </configuration>
CustomCredentialsProvider
-
Configure o tipo de provedor
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.CustomCredentialsProvider</value> </property> </configuration> -
Configure a URL do serviço sem senha
<configuration> <property> <name>aliyun.oss.provider.url</name> <value>The URL of the password-free service.</value> </property> </configuration>O parâmetro aliyun.oss.provider.url aceita os protocolos HTTP(S) e Secrets:
-
Protocolo HTTP(S)
O formato da URL para o serviço sem senha via HTTP(S) é
http://localhost:1234/sts. O protocolo sem senha via HTTP exige resposta no formato JSON.{ "AccessKeyId" : "XXXXXXXXX", "AccessKeySecret" : "XXXXXXXXX", "Expiration" : "2020-11-01T05:20:01Z", "SecurityToken" : "XXXXXXXXX", "LastUpdated" : "2020-10-31T23:20:01Z", "Code" : "Success" } -
Protocolo Secrets
O formato de endereço para o serviço sem senha via Secrets é
secrets:///local_path_prefix, comum em cenários do Kubernetes. Nesse caso, local_path_prefix representa o prefixo do caminho:Se local_path_prefix for secrets:///secret/JindoOss, o sistema buscará no nó arquivos como /secret/JindoOssAccessKeyId, /secret/JindoOssAccessKeySecret e /secret/JindoOssSecurityToken.
Caso local_path_prefix seja secrets:///secret/JindoOss/, o sistema buscará no nó arquivos como /secret/JindoOss/AccessKeyId, /secret/JindoOss/AccessKeySecret e /secret/JindoOss/SecurityToken.
-