0
votes

Authentication is not enable for Mesos APIs by default. After Install DCOS I want config Mesos API Authentication on it. I'm going to set authentication for mesos APIs like : register_frameworks, run_task,...

the problem is after my configuration, DCOS GUI and marathon dosent work correctly.

I configured DCOS as follow:

Mesos environment variable config: path:/opt/mesosphere/etc/mesos-master

#Authentication part
MESOS_LOG_DIR=/var/log/mesos
#Framework authentication
MESOS_AUTHENTICATORS="crammd5"
MESOS_AUTHENTICATE_FRAMEWORKS=true
MESOS_AUTHENTICATE_HTTP_FRAMEWORKS=true
MESOS_HTTP_FRAMEWORK_AUTHENTICATORS="basic"
MESOS_ACLS=/opt/mesosphere/etc/acls

MESOS_AUTHENTICATE=true
MESOS_CREDENTIALS=/opt/mesosphere/etc/mesos_credentials_auth.json
MESOS_ROLE=foo

Marathon environment variable config: path:/opt/mesosphere/marathon

#authentication section
MARATHON_MESOS_AUTHENTICATION=enabled
#MARATHON_HTTP_CREDENTIALS=marathon:123456
MARATHON_MESOS_AUTHENTICATION_PRINCIPAL=marathon
MARATHON_MESOS_ROLE=foo
MARATHON_MESOS_AUTHENTICATION_SECRET_file=/opt/mesosphere/etc/marathon.secret

Marathon environment variable config: path:/opt/mesosphere/metronome

METRONOME_MESOS_AUTHENTICATION_ENABLED=true
METRONOME_MESOS_AUTHENTICATION_PRINCIPAL=metronome
METRONOME_MESOS_ROLE=foo
METRONOME_MESOS_AUTHENTICATION_SECRET_FILE= /opt/mesosphere/etc/metronome.secret

/opt/mesosphere/etc/metronome.secret (contain metronome secret without new line)

123456

/opt/mesosphere/etc/marathon.secret (contain marathon secret without new line)

123456

/opt/mesosphere/etc/acls

{
"run_tasks": [
    {
        "principals": {
            "type": "ANY"
        },
        "users": {
            "type": "ANY"
        }
}
],
"register_frameworks": [
    {
        "principals": {
            "type": "ANY"
        },
        "roles": {
            "type": "ANY"
        }
}
]

}

/opt/mesosphere/etc/mesos_credentials_auth.json

{
 "credentials" : [
 {
   "principal": "principal1",
   "secret": "secret1"
 },
 {
   "principal": "principal2",
   "secret": "secret2"
 },
 {
     "principal": "marathon",
     "secret": "123456"
     },
 {
     "principal": "metronome",
     "secret": "123456"
     }
  ]
  }

When I enable this configuration and stop and start dcos-mesos-master:

systemctl stop dcos-mesos-master.service    
systemctl start dcos-mesos-master.service


systemctl stop dcos-marathon.service
systemctl start dcos-marathon.service

systemctl stop dcos-metronome.service
systemctl start dcos-metronome.service

http://IP/services page in DCOS dosnt work. I think its beacuase authentication of marathon don't set correctly. bcs this address dosent work after enable authentication configuration:\

http://IP/service/marathon/v2/deployments?_timestamp=1560449507192

I got this errors in mesos log after enable metronome authentication:

I0613 17:35:12.176092   305 authenticator.cpp:98] Creating new server 
SASL connection
I0613 17:35:12.177258   304 master.cpp:10255] Re-authenticating 
[email protected]:15201; 
discarding outstanding authentication
I0613 17:35:12.177523   304 master.cpp:10285] Ignoring stale 
authentication result of scheduler-aca98ea7-be34-49d1-9200- 
[email protected]:15201
I0613 17:35:12.177582   304 authenticator.cpp:98] Creating new server 
SASL connection
I0613 17:35:12.178586   302 master.cpp:10255] Re-authenticating 
[email protected]:15201; 
discarding outstanding authentication
I0613 17:35:12.178850   302 master.cpp:10285] Ignoring stale 
authentication result of scheduler-aca98ea7-be34-49d1-9200- 
[email protected]:15201
1

1 Answers

0
votes

After search, finally I got my answer:

These security features are only available on "DC/OS mesosphere Enterprise" and you cant config it in open source version.

also I opened github issue with more details:(I hope it will be usefull)

https://github.com/mesosphere/marathon/issues/6942