このトピックでは、OSS/OSS-HDFS クレデンシャルプロバイダーの設定方法について説明します。
基本的な設定
Hadoop の core-site.xml ファイルに、OSS または OSS-HDFS の AccessKey ID、AccessKey secret、エンドポイントを事前に設定できます。 EMR クラスターでこれらのパラメーターを設定するには、次の手順を実行します。
Hadoop-Common サービスの構成ページで、core-site.xml タブをクリックします。
[設定項目の追加] をクリックし、設定項目 fs.oss.accessKeyId と fs.oss.accessKeySecret を追加します。
[OK] をクリックし、実行理由を入力して、[OK] をクリックします。
下の [保存] をクリックします。
Hadoop クレデンシャルプロバイダーを使用した AccessKey の保存
基本的な設定方法では、fs.oss.accessKeyId と fs.oss.accessKeySecret は core-site.xml に平文で保存されます。これらを Hadoop Credential Providers ファイルに暗号化されたペアとして保存できます。
次の Hadoop コマンドを使用して、AccessKey ID、AccessKey secret、セキュリティトークンをクレデンシャルファイルに保存します。
hadoop credential <subcommand> [options]ファイルのアクセス許可に加えて、パスワードを指定してクレデンシャルを暗号化することもできます。 パスワードを省略した場合、システムは暗号化にデフォルトの文字列を使用します。
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クレデンシャルファイルを生成した後、次のプロパティを設定してプロバイダーのタイプと場所を指定します。
<configuration>
<property>
<name>fs.oss.security.credential.provider.path</name>
<value>jceks://file/root/oss.jceks</value>
<description>アクセスキーを保存するクレデンシャルファイルを指定します。 たとえば、jceks://file/${user.home}/oss.jceks は、ホームディレクトリにある oss.jceks ファイルを指します。</description>
</property>
</configuration>JindoSDK クレデンシャルプロバイダーの使用
デフォルトでは、JindoSDK には SimpleCredentialsProvider、EnvironmentVariableCredentialsProvider、CommonCredentialsProvider が設定されています。システムは、有効なクレデンシャルを取得するまで、各プロバイダーに順番にクエリを実行します。
<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 を指定します。 複数のプロバイダーを使用するには、クラス名をコンマ (,) で区切ります。 システムは、各プロバイダーから順番にクレデンシャルの取得を試みます。 プロバイダーの詳細については、「クレデンシャルプロバイダーのタイプ」をご参照ください。</description>
</property>
</configuration>次のオプションからクレデンシャルプロバイダーを選択してください。
クレデンシャルプロバイダーのタイプ | 説明 |
TemporaryCredentialsProvider | このプロバイダーを使用して、期限付きの AccessKey ID、AccessKey secret、セキュリティトークンで OSS または OSS-HDFS にアクセスします。 |
SimpleCredentialsProvider | このプロバイダーを使用して、長期の AccessKey ID と AccessKey secret で OSS または OSS-HDFS にアクセスします。 |
EnvironmentVariableCredentialsProvider | 環境変数からクレデンシャルを取得します。 |
CommonCredentialsProvider | 一般的な Jindo 設定パラメーターからクレデンシャルを取得するプロバイダーです。 |
CustomCredentialsProvider | カスタムのパスワードレスサービスと統合します。 |
TemporaryCredentialsProvider
プロバイダーのタイプを設定
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.TemporaryCredentialsProvider</value> </property> </configuration>OSS または 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
プロバイダーのタイプを設定
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.SimpleCredentialsProvider</value> </property> </configuration>OSS または 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
プロバイダーのタイプを設定
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.EnvironmentVariableCredentialsProvider</value> </property> </configuration>OSS または OSS-HDFS のクレデンシャルを設定
次の環境変数を設定してください。
パラメーター
説明
OSS_ACCESS_KEY_ID
OSS または OSS-HDFS の AccessKey ID。
OSS_ACCESS_KEY_SECRET
OSS または OSS-HDFS の AccessKey secret。
OSS_SECURITY_TOKEN
OSS または OSS-HDFS のセキュリティトークン。
説明注:期限付きトークンを使用する場合にのみ必須です。
CommonCredentialsProvider
プロバイダーのタイプを設定
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.CommonCredentialsProvider</value> </property> </configuration>OSS または 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(期限付きトークンに必須)</value> </property> </configuration>
CustomCredentialsProvider
プロバイダーのタイプを設定
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.CustomCredentialsProvider</value> </property> </configuration>パスワードレスサービスの URL を設定
<configuration> <property> <name>aliyun.oss.provider.url</name> <value>パスワードレスサービスの URL。</value> </property> </configuration>aliyun.oss.provider.url は、http(s) および Secrets プロトコルをサポートしています:
HTTP(S) プロトコル
HTTP(S) パスワードフリーサービスの URL 形式は
http://localhost:1234/stsです。HTTP パスワードフリープロトコルでは、レスポンスを JSON 形式にする必要があります。{ "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であり、Kubernetes シナリオで一般的に使用されます。 ここで、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 などのファイルがノード上で検索されます。