全部產品
Search
文件中心

E-MapReduce:配置OSS/OSS-HDFS Credential Provider

更新時間:Jul 01, 2024

本文為您介紹如何配置OSS/OSS-HDFS Credential Provider。

基本配置方式

您可以將OSS或OSS-HDFS的AccessKey ID、AccessKey Secret、Endpoint預先配置在Hadoop的core-site.xml中。EMR叢集配置具體步驟為:

  1. 在Hadoop-Common服務配置頁面,單擊core-site.xml頁簽。

  2. 單擊新增配置項,新增配置項fs.oss.accessKeyIdfs.oss.accessKeySecret

  3. 單擊確定,填寫執行原因,單擊確定

  4. 單擊下方的儲存

使用Hadoop Credential Providers儲存AccessKey資訊

上面基本配置方式中的fs.oss.accessKeyIdfs.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_prefixsecrets:///secret/JindoOss,則會在節點上尋找/secret/JindoOssAccessKeyId/secret/JindoOssAccessKeySecret/secret/JindoOssSecurityToken 等檔案。

      • 如果local_path_prefixsecrets:///secret/JindoOss/,則會在節點上尋找/secret/JindoOss/AccessKeyId/secret/JindoOss/AccessKeySecret/secret/JindoOss/SecurityToken等檔案。