Hi Alex,

Are you using new KerberosToken() and passing that to the AccumuloClient
builder?

Billie

On Mon, Jun 7, 2021 at 7:40 AM Sparks, Alex <alex.spa...@cgi.com> wrote:

> Hi All,
>
>
>
> We are trying to make major version upgrades of Accumulo and Hadoop:
>
> Accumulo: 1.8.1 à 2.0.1
>
> Hadoop: 2.8.2 à 3.0.3
>
>
>
> They run as single non-clustered containers in a Docker environment. We
> have a separate Zookeeper container running which they talk to at version
> 3.4.10. Other client containers authenticate with Kerberos in order to
> retrieve information from Accumulo. We have a KDC running on a separate
> authentication VM which is reachable by both containers.
>
>
>
> Once upgrading their major versions we get a problem with their Kerberos
> authentication. On initialisation, Accumulo and Hadoop run kinit commands
> to generate themselves ticket-granting-tickets (TGTs) which are valid for
> 24h, and the full application works as expected. After 24h, however, our
> client containers can no longer authenticate and access information from
> Accumulo, despite the clients having valid service tickets for Accumulo.
>
> If we manually regenerate the TGT within Accumulo with another kinit
> command the problem still persists.
>
> If we manually change the KDC’s configuration to issue 10 minute tickets
> rather than 24h, then authentication breaks after 10 minutes regardless of
> each component’s krb5.conf file.
>
> Pre-upgrade all our containers must have been able to retrieve new tickets
> once their old ones had expired, but this no longer seems to be the case.
> The only way to fix the problem is by restarting the containers. Below are
> the configuration files for the various containers - any variables
> surrounded by “<>” are substituted in at runtime and point to valid paths /
> files / values.
>
>
>
> *Accumulo accumulo.properties:*
>
> general.kerberos.keytab=<KRB_KEYTAB>
>
> general.kerberos.principal=<KRB_PRINCIPAL>
>
> instance.rpc.sasl.enabled=true
>
> instance.secret=<SECRET>
>
>
> instance.security.authenticator=org.apache.accumulo.server.security.handler.KerberosAuthenticator
>
>
> instance.security.authorizor=org.apache.accumulo.server.security.handler.KerberosAuthorizor
>
>
> instance.security.permissionHandler=org.apache.accumulo.server.security.handler.KerberosPermissionHandler
>
> instance.volumes=<HDFS_VOLUMES>
>
> instance.zookeeper.host=<ZOOKEEPERS>
>
> rpc.sasl.qop=auth
>
> trace.token.property.keytab=<KRB_KEYTAB>
>
>
> trace.token.type=org.apache.accumulo.core.client.security.tokens.KerberosToken
>
> trace.user=<KRB_PRINCIPAL@>
>
> tserver.cache.data.size=<CACHE_DATA_SIZE>
>
> tserver.cache.index.size=<CACHE_INDEX_SIZE>
>
> tserver.memory.maps.max=<MEMORY_MAPS_MAX>
>
> tserver.memory.maps.native.enabled=false
>
> tserver.sort.buffer.size=<SORT_BUFFER_SIZE>
>
> tserver.walog.max.size=<WALOG_MAX_SIZE>
>
>
>
>
>
> *Accumulo accumulo-client.properties:*
>
> instance.name=accumulo
>
> instance.zookeepers=<ZOOKEEPERS>
>
> instance.zookeepers.timeout=30s
>
>
>
> auth.type=kerberos
>
> auth.principal=<KRB_PRINCIPAL>
>
> auth.token=<KRB_KEYTAB>
>
>
>
> sasl.enabled=true
>
> sasl.qop=auth
>
> sasl.kerberos.server.primary=accumulo
>
>
>
>
>
> *Accumulo / Hadoop / Zookeeper krb5.conf (all identical):*
>
> includedir /etc/krb5.conf.d/
>
>
>
> [logging]
>
>  default = FILE:/var/log/krb5libs.log
>
>  kdc = FILE:/var/log/krb5kdc.log
>
>  admin_server = FILE:/var/log/kadmind.log
>
>
>
> [libdefaults]
>
>  dns_lookup_realm = false
>
>  ticket_lifetime = 24h
>
>  renew_lifetime = 7d
>
>  forwardable = true
>
>  rdns = false
>
>  pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt
>
>  default_realm = NRAC.UK
>
> #default_ccache_name = KEYRING:persistent:%{uid}
>
>  udp_preference_limit = 1
>
>
>
> [realms]
>
>  NRAC.UK = {
>
>   kdc = <ldap-server>
>
>   admin_server = <ldap-server>
>
>   default_domain = <our_domain>
>
>   database_module = openldap_ldapconf
>
>  }
>
>
>
> [domain_realm]
>
>  .<our_domain> = <OUR_DOMAIN>
>
>  <our_domain> = <OUR_DOMAIN>
>
>
>
> [dbdefaults]
>
>  ldap_kerberos_container_dn = cn=krbContainer,dc=nrac,dc=uk
>
>
>
> [dbmodules]
>
>  openldap_ldapconf = {
>
>   db_library = kldap
>
>   ldap_kdc_dn = "cn=nrac-ldapadm,dc=nrac,dc=uk"
>
>   ldap_kadmind_dn = "cn=nrac-ldapadm,dc=nrac,dc=uk"
>
>   ldap_service_password_file = /etc/krb5kdc/service.keyfile
>
>   ldap_servers = ldaps://<ldap-server>
>
>   ldap_conns_per_server = 5
>
>  }
>
>
>
>
>
> Any help would be much appreciated, many thanks.
>
>
>
> Alex Sparks
>
>
>
> Public
>

Reply via email to