このトピックでは、オブジェクトストレージサービス(OSS)または OSS-HDFS の資格情報プロバイダーを構成する方法について説明します。
EMR コンソールで関連パラメーターを構成する
OSS または OSS-HDFS にアクセスするために使用する AccessKey ID、AccessKey Secret、およびエンドポイントを、Hadoop の core-site.xml ファイルに事前に追加できます。E-MapReduce(EMR)クラスターの関連パラメーターを構成するには、次の手順を実行します。
- Hadoop-Common サービスの [構成] タブで、[core-site.xml] タブをクリックします。
- [構成項目を追加] をクリックして、[fs.oss.accessKeyId] パラメーターと [fs.oss.accessKeySecret] パラメーターを追加します。
- [OK] をクリックします。表示されるダイアログボックスで、実行理由を入力し、[保存] をクリックします。
- ページの下部にある [保存] をクリックします。
Hadoop 資格情報プロバイダーを使用して AccessKey ペアを保存する
前の手順で構成した [fs.oss.accessKeyId] パラメーターと [fs.oss.accessKeySecret] パラメーターは、[core-site.xml] ファイルにプレーンテキストで表示されます。Hadoop 資格情報プロバイダーの資格情報ファイルにパラメーターの値を暗号化して保存できます。
AccessKey ペアとセキュリティトークンを資格情報ファイルに保存するには、Hadoop によって提供される次のコマンドを実行します。
hadoop credential <subcommand> [options]たとえば、AccessKey ペアとセキュリティトークンを JCEKS ファイルに保存します。ファイルのアクセス許可を使用してファイルを保護したり、保存する情報を暗号化するためのパスワードを指定したりできます。パスワードを指定しない場合は、デフォルトの文字列が暗号化に使用されます。
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>AccessKey ペアを格納する資格情報ファイルを格納するために使用されるパス。たとえば、このパラメーターを jceks://file/${user.home}/oss.jceks に設定できます。これは、oss.jceks ファイルがホームディレクトリに格納されていることを示します。</description>
</property>
</configuration>JindoSDK で資格情報プロバイダーを使用して OSS または OSS-HDFS にアクセスする
デフォルトでは、SimpleCredentialsProvider、EnvironmentVariableCredentialsProvider、CommonCredentialsProvider の 3 種類の資格情報プロバイダーが構成されています。システムは、有効な資格情報が取得されるまで、資格情報プロバイダーから資格情報データを順番に読み取ります。
<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 ペアと有効期限のあるセキュリティトークンを使用して OSS または OSS-HDFS にアクセスするシナリオに適しています。 |
| SimpleCredentialsProvider | この資格情報プロバイダーは、永続的に有効な AccessKey ペアを使用して OSS または OSS-HDFS にアクセスするシナリオに適しています。 |
| EnvironmentVariableCredentialsProvider | この資格情報プロバイダーは、環境変数から AccessKey ペアを取得するのに適しています。 |
| CommonCredentialsProvider | この資格情報プロバイダーは、一般的なシナリオに適しています。 |
| CustomCredentialsProvider | この資格情報プロバイダーは、パスワードなしでサービスにアクセスするのに適しています。 |
TemporaryCredentialsProvider
- 資格情報プロバイダーを構成する
<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 にアクセスするために使用されるセキュリティトークン。</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 にアクセスするために使用される 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
- 資格情報プロバイダーを構成する
<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 にアクセスするために使用されるセキュリティトークン。 説明 このパラメーターは、有効期限のあるトークンを構成する場合にのみ必要です。
CommonCredentialsProvider
- 資格情報プロバイダーを構成する
<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 にアクセスするために使用されるセキュリティトークン。このパラメーターは、有効期限のあるトークンを構成する場合にのみ必要です。</value> </property> </configuration>
CustomCredentialsProvider
- 資格情報プロバイダーを構成する
<configuration> <property> <name>fs.oss.credentials.provider</name> <value>com.aliyun.jindodata.oss.auth.CustomCredentialsProvider</value> </property> </configuration> - パスワードなしでサービスの URL を構成する
[aliyun.oss.provider.url] パラメーターは、HTTP、HTTPS、または Secrets プロトコルを介してアクセスできるパスワードなしのサービスの URL に設定できます。<configuration> <property> <name>aliyun.oss.provider.url</name> <value>パスワードなしでサービスの URL。</value> </property> </configuration>- HTTP または HTTPS プロトコルHTTP または HTTPS プロトコルを介してアクセスできるパスワードなしのサービスの URL は、
http://localhost:1234/sts形式です。戻り値は JSON 形式である必要があります。詳細については、「API オペレーションを呼び出してインスタンス RAM ロールを使用する」トピックの 手順 5:(オプション)一時的な認証トークンを取得する セクションを参照してください。{ "AccessKeyId" : "XXXXXXXXX", "AccessKeySecret" : "XXXXXXXXX", "Expiration" : "2020-11-01T05:20:01Z", "SecurityToken" : "XXXXXXXXX", "LastUpdated" : "2020-10-31T23:20:01Z", "Code" : "Success" } - Secrets プロトコルSecrets プロトコルを介してアクセスできるパスワードなしのサービスの URL は、
secrets:///local_path_prefix形式です。この URL 形式は、Kubernetes のシナリオでよく使用されます。[local_path_prefix] パラメーターは、URL のプレフィックスを示します。- URL が [secrets:///secret/JindoOss] に設定されている場合、システムは EMR クラスターのノードで [/secret/JindoOssAccessKeyId]、[/secret/JindoOssAccessKeySecret]、[/secret/JindoOssSecurityToken] などのファイルを検索します。
- URL が [secrets:///secret/JindoOss/] に設定されている場合、システムは EMR クラスターのノードで [/secret/JindoOss/AccessKeyId]、[/secret/JindoOss/AccessKeySecret]、[/secret/JindoOss/SecurityToken] などのファイルを検索します。
- HTTP または HTTPS プロトコル