| 名称 | 值 | 描述 |
|---|---|---|
| hadoop.kms.http.port | 9600 | KMS REST API的HTTP端口。 |
| hadoop.kms.http.host | 0.0.0.0 | KMS REST API的绑定主机地址。 |
| hadoop.kms.http.administrators | 管理员访问控制列表(ACL),该配置用于控制哪些用户可以访问默认的KMS服务。值应为逗号分隔的用户和组列表。用户列表在前,通过空格与组列表分隔,例如"user1,user2 group1,group2"。用户和组都是可选的,因此"user1"、" group1"、""、"user1 group1"、"user1,user2 group1,group2"都是有效的(注意" group1"中的前导空格)。'*'表示授予所有用户和组访问权限,例如'*'、'* '和' *'都是有效的。 | |
| hadoop.kms.ssl.enabled | false | 是否启用SSL。默认为false,即禁用状态。 |
| hadoop.http.max.threads | 1000 | 最大线程数。 |
| hadoop.http.max.request.header.size | 65536 | HTTP请求头的最大尺寸。 |
| hadoop.http.max.response.header.size | 65536 | HTTP响应头的最大尺寸。 |
| hadoop.http.temp.dir | ${hadoop.tmp.dir}/kms | KMS临时目录。 |
| hadoop.http.socket.backlog.size | 500 | KMS服务器接收队列大小。 |
| hadoop.http.idle_timeout.ms | 60000 | KMS服务器连接超时时间(毫秒)。 |
| hadoop.kms.key.provider.uri | jceks://file@/${user.home}/kms.keystore | KMS所依赖的后端KeyProvider的URI地址。 |
| hadoop.security.keystore.java-keystore-provider.password-file | 如果使用JavaKeyStoreProvider,则为密钥库密码的文件名。 | |
| hadoop.kms.cache.enable | true | 是否启用KMS作为底层KeyProvider的缓存。 当缓存启用时,像getKeyVersion、getMetadata和getCurrentKey这样的操作有时会返回缓存数据而无需查询底层KeyProvider。 当密钥被删除或修改时,缓存值会被清除。 |
| hadoop.kms.cache.timeout.ms | 600000 | KMS密钥版本和密钥元数据缓存的过期时间,单位为毫秒。这会影响getKeyVersion和getMetadata操作。 |
| hadoop.kms.current.key.cache.timeout.ms | 30000 | KMS当前密钥缓存的过期时间,单位为毫秒。这会影响getCurrentKey操作。 |
| hadoop.kms.audit.aggregation.window.ms | 10000 | 在聚合窗口(以毫秒为单位)内的重复审计日志事件将被合并以减少日志流量。在窗口结束时,会打印一条关于聚合事件的汇总消息,并显示聚合事件的数量统计。 |
| hadoop.kms.authentication.type | simple | KMS的身份验证类型。可以是'simple'(默认)或'kerberos'。 |
| hadoop.kms.authentication.kerberos.keytab | ${user.home}/kms.keytab | 配置的Kerberos主体凭据对应的keytab文件路径。 |
| hadoop.kms.authentication.kerberos.principal | HTTP/localhost | 用于HTTP端点的Kerberos主体名称。 根据Kerberos HTTP SPNEGO规范,主体名称必须以'HTTP/'开头。 |
| hadoop.kms.authentication.kerberos.name.rules | DEFAULT | 用于解析Kerberos主体名称的规则。 |
| hadoop.kms.authentication.signer.secret.provider | random | 指定用于签名认证cookie的密钥存储方式。可选值为'random'(默认)、'string'和'zookeeper'。 如果在多KMS实例配置中使用,应选择'zookeeper'选项。 |
| hadoop.kms.authentication.signer.secret.provider.zookeeper.path | /hadoop-kms/hadoop-auth-signature-secret | KMS实例用于存储和获取密钥的Zookeeper ZNode路径。 |
| hadoop.kms.authentication.signer.secret.provider.zookeeper.connection.string | #HOSTNAME#:#PORT#,... | Zookeeper连接字符串,由逗号分隔的主机名和端口列表组成。 |
| hadoop.kms.authentication.signer.secret.provider.zookeeper.auth.type | none | Zookeeper认证类型,'none'(默认)或'sasl'(Kerberos)。 |
| hadoop.kms.authentication.signer.secret.provider.zookeeper.kerberos.keytab | /etc/hadoop/conf/kms.keytab | 用于连接Zookeeper的Kerberos密钥表凭证的绝对路径。 |
| hadoop.kms.authentication.signer.secret.provider.zookeeper.kerberos.principal | kms/#HOSTNAME# | 用于连接Zookeeper的Kerberos服务主体名称。 |
| hadoop.kms.audit.logger | org.apache.hadoop.crypto.key.kms.server.SimpleKMSAuditLogger | KMS的审计日志记录器。这是一个以逗号分隔的KMSAuditLogger类名列表。默认仅使用文本格式的SimpleKMSAuditLogger。 如果未配置此项,将使用默认值。 |
| hadoop.kms.key.authorization.enable | true | 布尔属性,用于启用/禁用按密钥授权 |
| hadoop.security.kms.encrypted.key.cache.size | 100 | 缓存大小。这是每个密钥名称下可缓存的加密密钥(EEK)最大数量。 |
| hadoop.security.kms.encrypted.key.cache.low.watermark | 0.3 | 缓存的最低水位线。对于每个密钥名称,如果在get调用后,缓存的EEK数量小于(大小 * 低水位线),则该密钥名称下的缓存将异步填充。对于每个密钥名称,只有1个线程可以运行进行异步填充。 |
| hadoop.security.kms.encrypted.key.cache.num.fill.threads | 2 | 跨密钥名称允许填充缓存队列的最大异步线程总数。 |
| hadoop.security.kms.encrypted.key.cache.expiry | 43200000 | 缓存过期时间,单位为毫秒。内部使用Guava缓存作为实现方案。 过期策略采用expireAfterAccess |