本文為您介紹如何配置OSS/OSS-HDFS Credential Provider。
基本配置方式
您可以將OSS或OSS-HDFS的AccessKey ID、AccessKey Secret、Endpoint預先配置在Hadoop的core-site.xml中。EMR集群配置具體步驟為:
在Hadoop-Common服務配置頁面,單擊core-site.xml頁簽。
單擊新增配置項,新增配置項fs.oss.accessKeyId和fs.oss.accessKeySecret。
單擊確定,填寫執行原因,單擊確定。
單擊下方的保存。
使用Hadoop Credential Providers存儲AccessKey信息
上面基本配置方式中的fs.oss.accessKeyId和fs.oss.accessKeySecret將會明文配置在core-site.xml中,您可以將其以加密對方式存儲至Hadoop Credential Providers文件中。
使用Hadoop提供的命令,存儲AccessKey和SecurityToken信息至Credential文件中,命令格式如下。
hadoop credential <subcommand> [options]
例如,存儲AccessKey和SecurityToken信息至JECKS文件中,除了使用文件權限保護該文件外,您也可以指定密碼加密存儲信息,如果不指定密碼則使用默認字符串加密。
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
生成Credential文件后,您需要配置下面的參數來指定Provider的類型和位置。
<configuration>
<property>
<name>fs.oss.security.credential.provider.path</name>
<value>jceks://file/root/oss.jceks</value>
<description>配置存儲AccessKey的Credential文件。例如,jceks://file/${user.home}/oss.jceks為HOME下的oss.jceks文件</description>
</property>
</configuration>
使用JindoSDK OSS/OSS-HDFS Credential Provider
默認會配置SimpleCredentialsProvider、EnvironmentVariableCredentialsProvider和CommonCredentialsProvider這三個Credential Provider,按照先后順序讀取Credential直至讀到有效的Credential。
<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>配置com.aliyun.jindodata.oss.auth.JindoCredentialsProvider,多個類時使用英文逗號(, )隔開,按照先后順序讀取Credential直至讀到有效的Credential。Provider詳情請參見Credential Provider類型。</description>
</property>
</configuration>
您可以根據情況,選擇不同的Credential Provider,支持如下Provider:
Credential Provider類型 | 說明 |
TemporaryCredentialsProvider | 適合使用有時效性的AccessKey和SecurityToken訪問OSS或OSS-HDFS的情況。 |
SimpleCredentialsProvider | 適合使用長期有效的AccessKey訪問OSS或OSS-HDFS的情況。 |
EnvironmentVariableCredentialsProvider | 在環境變量中獲取AccessKey。 |
CommonCredentialsProvider | 通用配置。 |
CustomCredentialsProvider | 對接定制的免密服務。 |
TemporaryCredentialsProvider
配置Provider類型
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.TemporaryCredentialsProvider</value> </property> </configuration>
配置OSS或OSS-HDFS AccessKey
<configuration> <property> <name>fs.oss.accessKeyId</name> <value>OSS/OSS-HDFS的AccessKey Id</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>OSS/OSS-HDFS的AccessKey Secret</value> </property> <property> <name>fs.oss.securityToken</name> <value>OSS/OSS-HDFS的SecurityToken(臨時安全令牌)</value> </property> </configuration>
SimpleCredentialsProvider
配置Provider類型
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.SimpleCredentialsProvider</value> </property> </configuration>
配置OSS或OSS-HDFS AccessKey
<configuration> <property> <name>fs.oss.accessKeyId</name> <value>OSS/OSS-HDFS的AccessKey Id</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>OSS/OSS-HDFS的AccessKey Secret</value> </property> </configuration>
EnvironmentVariableCredentialsProvider
配置Provider類型
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.EnvironmentVariableCredentialsProvider</value> </property> </configuration>
配置OSS或OSS-HDFS AccessKey
需要在環境變量中配置以下參數:
參數
說明
OSS_ACCESS_KEY_ID
OSS或OSS-HDFS的AccessKey ID。
OSS_ACCESS_KEY_SECRET
OSS或OSS-HDFS的AccessKey Secret。
OSS_SECURITY_TOKEN
OSS或OSS-HDFS的SecurityToken(臨時安全令牌)。
說明僅配置有時效Token時需要。
CommonCredentialsProvider
配置Provider類型
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.CommonCredentialsProvider</value> </property> </configuration>
配置OSS或OSS-HDFS AccessKey
<configuration> <property> <name>jindo.common.accessKeyId</name> <value>OSS/OSS-HDFS的AccessKey Id</value> </property> <property> <name>jindo.common.accessKeySecret</name> <value>OSS/OSS-HDFS的AccessKey Secret</value> </property> <property> <name>jindo.common.securityToken</name> <value>OSS/OSS-HDFS的SecurityToken(臨時安全令牌)。僅配置有時效Token時需要。</value> </property> </configuration>
CustomCredentialsProvider
配置Provider類型
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.CustomCredentialsProvider</value> </property> </configuration>
配置免密服務地址
<configuration> <property> <name>aliyun.oss.provider.url</name> <value>免密服務地址</value> </property> </configuration>
aliyun.oss.provider.url支持 http(s)協議和Secrets協議:
http(s)協議
http(s)協議免密服務地址格式為
http://localhost:1234/sts
, http免密協議要求返回結果為JSON格式,如果您需要對接您的http免密服務,詳情請參見步驟五:(可選)獲取臨時授權Token。{ "AccessKeyId" : "XXXXXXXXX", "AccessKeySecret" : "XXXXXXXXX", "Expiration" : "2020-11-01T05:20:01Z", "SecurityToken" : "XXXXXXXXX", "LastUpdated" : "2020-10-31T23:20:01Z", "Code" : "Success" }
Secrets協議
Secrets協議免密服務地址格式為
secrets:///local_path_prefix
,常見使用于k8s 場景。其中local_path_prefix為路徑前綴:如果local_path_prefix為secrets:///secret/JindoOss,則會在節點上查找/secret/JindoOssAccessKeyId、/secret/JindoOssAccessKeySecret、/secret/JindoOssSecurityToken 等文件。
如果local_path_prefix為secrets:///secret/JindoOss/,則會在節點上查找/secret/JindoOss/AccessKeyId、/secret/JindoOss/AccessKeySecret、/secret/JindoOss/SecurityToken等文件。