YARN queue ACL for Spark

3595 단어 보안스파크YARN
어제 썼다.

YARN으로 강화하는 Spark 보안 대책

Spark 자체가 제공하는 보안 대책 외에 YARN의 Capacity Scheduler를 사용함으로써 RM에 대해 애플리케이션 등록 시 인증을 걸 수 있다. 조금 시간 끊어져 왔으므로, 자세한 것은 또 나중에 추기.

YARN 스케줄러가 가진 큐



YARN의 Capacity Scheduler와 Fair Scheduler는 애플리케이션 등록을 수락하는 큐를 가지고 있으며, 이들은 UNIX 사용자/그룹 기반 ACL을 곱할 수 있다. 이렇게하면 Spark 응용 프로그램을 실행하는 각 사용자에 대해 응용 프로그램 등록 여부를 제어 할 수 있습니다. Capacity Scheduler의 경우, 복수의 큐를 가질 수 있으므로, 큐 단위로의 유저의 이용 제한을 곱할 수도 있다.

다음은 Capacity Scheduler의 설정 예. default라는 큐에 대해 yuta라는 UNIX 사용자가 애플리케이션을 등록하거나 kill할 수 있도록 하려면 capacity-scheduler.xml에 다음과 같은 설정을 한다.
    <property>
      <name>yarn.scheduler.capacity.root.acl_administer_queue</name>
      <value></value>
    </property>

    <property>
      <name>yarn.scheduler.capacity.root.acl_submit_applications</name>
      <value></value>
    </property>

    <property>
      <name>yarn.scheduler.capacity.root.default.acl_administer_queue</name>
      <value>yuta</value>
    </property>

    <property>
      <name>yarn.scheduler.capacity.root.default.acl_submit_applications</name>
      <value>yuta</value>
    </property>

주의해야 할 점으로 yarn.scheduler.capacity.root.acl_administer_queueyarn.scheduler.capacity.root.acl_submit_applications 보다 상위의 설정의 디폴트치가 *(全許可) 하지만 제한이 효과가 없다. 이 거동은 어때? 라고 하는 이야기는 Spark and YARN 로 논의되고 있지만, 우선 이대로 방치되는 모양.

위와 같은 설정을 Ambari에서 실시한다면 이런 느낌이다.
왼쪽이 루트 설정, 오른쪽이 default 큐 설정
YARN-1941

Apache Ranger로 사용자/그룹 관리



사용자나 그룹의 관리는 으로 이전할 수도 있다. Apache Ranger는 Hadoop 생태계에 대한 권한 부여 및 감사를 제공하는 구성 요소로 UNIX 사용자 및 LDAP에서 사용자 및 그룹의 동기를 부여하고 Hadoop의 각 구성 요소에 대한 액세스 권한 부여 및 운영 로그 관리 해준다. 예를 들어 YARN과 Ranger를 조합한다면 다음과 같은 UI에서 "어떤 큐에 누구로부터의 액세스를 허가할 것인가"라고 하는 설정을 해 준다.
Apache Ranger

멀티 테넌트 Spark 클러스터 운영



어제 포스트에서 이라고 하는 파트로 「멀티 테넌트인 Spark 클러스터라면 YARN을 사용하는 것의 메리트가 나오기 쉬운 것은」라고 하는 이야기를 썼지만, 멀티 테넌트이면 당연히 유저의 수도 늘어난다.

이러한 환경에서는 capacity-scheduer.xml의 업데이트로 이용 사용자나 그룹을 관리하는 것은 운용의 번거로움이 걸린다. 이런 경우에는 전술한 Apache Ranger를 사용하여 아래와 같은 구성을 취하는 것이 베터라고 할 수 있다.
Spark는 YARN에서 움직여야합니까?

요약



YARN은 큐의 ACL을 가지고 있기 때문에, Spark에 대해 「누가 어플리케이션 등록할 수 있을까」라고 하는 유저/그룹 단위로의 제어를 제공해 준다. 또한 Apache Ranger와 조합하면 사용자/그룹 관리를 LDAP 등으로 외출 할 수 있습니다. 그래서 다수의 사용자가 이용하는 Spark의 클러스터에 매치한다.

그래서 Spark의 클러스터 매니저에 YARN을 선택하는 것의 하나의 장점으로 "멀티 테넌트 환경 관리가 쉽다"고 말할 수 있다.

Disclaimer



이것은 개인의 의견이며 내 고용주를 대표하지 않습니다.

좋은 웹페이지 즐겨찾기