Robert Levas created AMBARI-8542:
------------------------------------

             Summary: Provide a way to parse and handle Kerberos descriptors
                 Key: AMBARI-8542
                 URL: https://issues.apache.org/jira/browse/AMBARI-8542
             Project: Ambari
          Issue Type: Task
          Components: ambari-server, stacks
    Affects Versions: 2.0.0
            Reporter: Robert Levas
            Assignee: Robert Levas
             Fix For: 2.0.0


Provide the ability to read in Kerberos descriptor files (kerberos.json) from 
the stack at various levels (stack-level, service-level) and to merge them into 
a single hierarchy.  The composite Kerberos descriptor data will be used to 
control the UI (Kerberos Wizard - see AMBARI-7450).

An example stack-level Kerberos Descriptor:
{code}
{
  "properties": {
    "realm": "${cluster-env/kerberos_domain}",
    "keytab_dir": "/etc/security/keytabs"
  },
  "identities": [
    {
      "name": "spnego",
      "principal": {
        "value": "HTTP/_HOST@${realm}"
      },
      "keytab": {
        "file": "${keytab_dir}/spnego.service.keytab",
        "owner": {
          "name": "root",
          "access": "r"
        },
        "group": {
          "name": "${cluster-env/user_group}",
          "access": "r"
        }
      }
    }
  ],
  "configurations": [
  ]
}
{code}

An example service-level Kerberos Descriptor - HDFS:
{code}
{
  "configurations": [
    {
      "core-site": {
        "hadoop.security.authentication": "kerberos",
        "hadoop.rpc.protection": "authentication; integrity; privacy",
        "hadoop.security.authorization": "true"
      }
    }
  ],
  "components": [
    {
      "name": "NAMENODE",
      "identities": [
        {
          "name" : "namenode_nn",
          "principal": {
            "value": "nn/_HOST@${realm}",
            "configuration": "hdfs-site/dfs.namenode.kerberos.principal"
          },
          "keytab": {
            "file": "${keytab_dir}/nn.service.keytab",
            "owner": {
              "name": "${hadoop-env/hdfs_user}",
              "access": "r"
            },
            "group": {
              "name": "${cluster-env/user_group}",
              "access": ""
            },
            "configuration": "hdfs-site/dfs.namenode.keytab.file"
          }
        },
        {
          "name" : "namenode_host",
          "principal": {
            "value": "host/_HOST@${realm}",
            "configuration": "hdfs-site/dfs.namenode.kerberos.https.principal"
          },
          "keytab": {
            "file": "${keytab_dir}/host.keytab",
            "owner": {
              "name": "${hadoop-env/hdfs_user}",
              "access": "r"
            },
            "group": {
              "name": "${cluster-env/user_group}",
              "access": ""
            },
            "configuration": "hdfs-site/dfs.namenode.keytab.file"
          }
        },
        {
          "name" : "/spnego",
          "principal": {
            "configuration": 
"hdfs-site/dfs.web.authentication.kerberos.principal"
          },
          "keytab": {
            "configuration": "hdfs/dfs.web.authentication.kerberos.keytab"
          }
        }
      ]
    },
    {
      "name": "DATANODE",
      "identities": [
        {
          "name" : "datanode_dn",
          "principal": {
            "value": "dn/_HOST@${realm}",
            "configuration": "hdfs-site/dfs.namenode.kerberos.principal"
          },
          "keytab": {
            "file": "${keytab_dir}/dn.service.keytab",
            "owner": {
              "name": "${hadoop-env/hdfs_user}",
              "access": "r"
            },
            "group": {
              "name": "${cluster-env/user_group}",
              "access": ""
            },
            "configuration": "hdfs-site/dfs.namenode.keytab.file"
          }
        },
        {
          "name" : "datanode_host",
          "principal": {
            "value": "host/_HOST@${realm}",
            "configuration": "hdfs-site/dfs.datanode.kerberos.https.principal"
          },
          "keytab": {
            "file": "${keytab_dir}/host.keytab.file",
            "owner": {
              "name": "${hadoop-env/hdfs_user}",
              "access": "r"
            },
            "group": {
              "name": "${cluster-env/user_group}",
              "access": ""
            },
            "configuration": "hdfs-site/dfs.namenode.secondary.keytab.file"
          }
        }
      ]
    },
    {
      "name": "SECONDARY_NAMENODE",
      "identities": [
        {
          "name" : "secondary_namenode_nn",
          "principal": {
            "value": "nn/_HOST@${realm}",
            "configuration": 
"hdfs-site/dfs.namenode.secondary.kerberos.principal"
          },
          "keytab": {
            "file": "${keytab_dir}/snn.service.keytab",
            "owner": {
              "name": "${hadoop-env/hdfs_user}",
              "access": "r"
            },
            "group": {
              "name": "${cluster-env/user_group}",
              "access": ""
            },
            "configuration": "hdfs-site/dfs.namenode.secondary.keytab.file"
          }
        },
        {
          "name" : "secondary_namenode_host",
          "principal": {
            "value": "host/_HOST@${realm}",
            "configuration": 
"hdfs-site/dfs.namenode.secondary.kerberos.https.principal"
          },
          "keytab": {
            "file": "${keytab_dir}/host.keytab.file",
            "owner": {
              "name": "${hadoop-env/hdfs_user}",
              "access": "r"
            },
            "group": {
              "name": "${cluster-env/user_group}",
              "access": ""
            },
            "configuration": "hdfs-site/dfs.namenode.secondary.keytab.file"
          }
        },
        {
          "name" : "/spnego",
          "principal": {
            "configuration": 
"hdfs-site/dfs.web.authentication.kerberos.principal"
          },
          "keytab": {
            "configuration": "hdfs/dfs.web.authentication.kerberos.keytab"
          }
        }
      ]
    }
  ]
}
{code}




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to