您可以使用Credential Provider配置加密后的AccessKey信息至文件中,避免泄露AccessKey信息。
背景信息
您可以通过使用Hadoop Credential Provider将加密后的AccessKey信息存入文件,从而避免配置明文AccessKey,根据不同情况选择合适的JindoOSS Credential Provider。
配置JindoOSS Credential Provider
- 进入SmartData服务。
- 登录阿里云E-MapReduce控制台。
- 在顶部菜单栏处,根据实际情况选择地域和资源组。
- 单击上方的集群管理页签。
- 在集群管理页面,单击相应集群所在行的详情。
- 在左侧导航栏,选择 。
- 登录阿里云E-MapReduce控制台。
进入smartdata-site服务配置。
- 单击配置页签。
在服务配置区域,单击smartdata-site页签。
添加配置信息。
在smartdata-site页签,单击右上角的自定义配置。
在新增配置项对话框中,新增如下配置。
全局方式配置(所有bucket使用同一种方式)
参数
描述
fs.jfs.cache.oss.credentials.provider
配置com.aliyun.emr.fs.auth.AliyunCredentialsProvider的实现类,多个类时使用英文逗号(, )隔开,按照先后顺序读取Credential直至读到有效的Credential。例如,
com.aliyun.emr.fs.auth.TemporaryAliyunCredentialsProvider,com.aliyun.emr.fs.auth.SimpleAliyunCredentialsProvider,com.aliyun.emr.fs.auth.EnvironmentVariableCredentialsProvider
。Provider详情请参见Provider类型。
按照bucket配置
参数
描述
fs.jfs.cache.oss.bucket.XXX.credentials.provider
配置com.aliyun.emr.fs.auth.AliyunCredentialsProvider的实现类,多个类时使用英文逗号(, )隔开,按照先后顺序读取Credential直至读到有效的Credential。例如,
com.aliyun.emr.fs.auth.TemporaryAliyunCredentialsProvider, com.aliyun.emr.fs.auth.SimpleAliyunCredentialsProvider,com. aliyun.emr.fs.auth.EnvironmentVariableCredentialsProvider
。Provider详情请参见Provider类型。
说明XXX为OSS bucket名称。
Provider类型
您可以根据情况,选择不同的Credential Provider,支持如下Provider:
全局方式配置
TemporaryAliyunCredentialsProvider
适合使用有时效性的AccessKey和SecurityToken访问OSS的情况。
参数
参数说明
fs.jfs.cache.oss.credentials.provider
com.aliyun.emr.fs.auth.TemporaryAliyunCredentialsProvider
fs.jfs.cache.oss.accessKeyId
OSS的AccessKey ID。
fs.jfs.cache.oss.accessKeySecret
OSS的AccessKey Secret。
fs.jfs.cache.oss.securityToken
OSS的SecurityToken(临时安全令牌)。
SimpleAliyunCredentialsProvider
适合使用长期有效的AccessKey访问OSS的情况。
参数
参数说明
fs.jfs.cache.oss.credentials.provider
com.aliyun.emr.fs.auth.SimpleAliyunCredentialsProvider
fs.jfs.cache.oss.accessKeyId
OSS的AccessKey ID。
fs.jfs.cache.oss.accessKeySecret
OSS的AccessKey Secret。
EnvironmentVariableCredentialsProvider
该方式需要在环境变量中配置以下参数。
参数
参数说明
fs.jfs.cache.oss.credentials.provider
com.aliyun.emr.fs.auth.EnvironmentVariableCredentialsProvider
ALIYUN_ACCESS_KEY_ID
OSS的AccessKey ID。
ALIYUN_ACCESS_KEY_SECRET
OSS的AccessKey Secret。
ALIYUN_SECURITY_TOKEN
OSS的SecurityToken(临时安全令牌)。
说明仅配置有时效Token时需要。
InstanceProfileCredentialsProvider
该方式无需配置AccessKey,可以免密方式访问OSS。
参数
参数说明
fs.jfs.cache.oss.credentials.provider
com.aliyun.emr.fs.auth.InstanceProfileCredentialsProvider
按照bucket配置
TemporaryAliyunCredentialsProvider
适合使用有时效性的AccessKey和SecurityToken访问OSS的情况。
参数
参数说明
fs.jfs.cache.oss.bucket.XXX.credentials.provider
com.aliyun.emr.fs.auth.TemporaryAliyunCredentialsProvider
fs.jfs.cache.oss.bucket.XXX.accessKeyId
OSS bucket的AccessKey ID。
fs.jfs.cache.oss.bucket.XXX.accessKeySecret
OSS bucket的AccessKey Secret。
fs.jfs.cache.oss.bucket.XXX.securityToken
OSS bucket的SecurityToken(临时安全令牌)。
SimpleAliyunCredentialsProvider
适合使用长期有效的AccessKey访问OSS的情况。
参数
参数说明
fs.jfs.cache.oss.bucket.XXX.credentials.provider
com.aliyun.emr.fs.auth.SimpleAliyunCredentialsProvider
fs.jfs.cache.oss.bucket.XXX.accessKeyId
OSS bucket的AccessKey ID。
fs.jfs.cache.oss.bucket.XXX.accessKeySecret
OSS bucket的AccessKey Secret。
EnvironmentVariableCredentialsProvider
该方式需要在环境变量中配置以下参数。
参数
参数说明
fs.jfs.cache.oss.bucket.XXX.credentials.provider
com.aliyun.emr.fs.auth.EnvironmentVariableCredentialsProvider
ALIYUN_ACCESS_KEY_ID
OSS bucket的AccessKey ID。
ALIYUN_ACCESS_KEY_SECRET
OSS bucket的AccessKey Secret。
ALIYUN_SECURITY_TOKEN
OSS bucket的SecurityToken(临时安全令牌)。
说明仅配置有时效Token时需要。
InstanceProfileCredentialsProvider
该方式无需配置AccessKey,可以免密方式访问OSS。
参数
参数说明
fs.jfs.cache.oss.bucket.XXX.credentials.provider
com.aliyun.emr.fs.auth.InstanceProfileCredentialsProvider
使用Hadoop Credential Providers存储AccessKey信息
Hadoop Credential Provider详情的使用方法,请参见CredentialProvider API Guide。
使用Hadoop提供的命令,存储AccessKey和SecurityToken信息至Credential文件中。命令格式如下。
hadoop credential <subcommand> [options]
例如,使用全局配置方式,存储AccessKey和Token信息至JCEKS文件中,除了使用文件权限保护该文件外,您也可以指定密码加密存储信息,如果不指定密码则使用默认字符串加密。
hadoop credential create fs.jfs.cache.oss.accessKeyId -value AAA -provider jceks://file/root/oss.jceks
hadoop credential create fs.jfs.cache.oss.accessKeySecret -value BBB -provider jceks://file/root/oss.jceks
hadoop credential create fs.jfs.cache.oss.securityToken -value CCC -provider jceks://file/root/oss.jceks
生成Credential文件后,您需要配置下面的参数来指定Provider的类型和位置。
参数 | 描述 |
fs.jfs.cache.oss.security.credential.provider.path | 配置存储AccessKey的Credential文件。 例如,jceks://file/${user.home}/oss.jceks为HOME下的oss.jceks文件。 |