本文為您介紹如何配置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等檔案。