[server] SmartOS에서 내보낼 때 SMF 매니페스트에서 구성 데이터가 손실되는 이유는 무엇입니까?

Joyent Base64 1.8.1 SmartOS 이미지의 SMF (Server Management Facility)에서 서버 프로세스를 실행하고 있습니다.

SmartOS를 사용하지 않는 사람들을 위해, 그것은 KVM을 통한 IllumOS의 클라우드 기반 배포입니다. 그러나 본질적으로 Solaris와 비슷하며 OpenSolaris에서 상속됩니다. 따라서 SmartOS를 사용하지 않더라도 ServerFault에 대한 Solaris 지식을 활용할 수 있기를 바랍니다.

내 문제는 권한이없는 사용자가 소유 한 서비스를 다시 시작할 수 있기를 원한다는 것입니다. RBAC를 사용하고 권한 부여를 추가하고 /etc/security/auth_attr해당 권한을 사용자와 연관 시킴으로써이를 수행하는 방법을 알아 냈습니다 .

그런 다음 서비스의 SMF 매니페스트에 다음을 추가했습니다.

<property_group name='general' type='framework'>
  <!-- Allow to be restarted-->
  <propval name='action_authorization' type='astring'
    value='solaris.smf.manage.my-server-process' />
  <!-- Allow to be started and stopped -->
  <propval name='value_authorization' type='astring'
    value='solaris.smf.manage.my-server-process' />
</property_group>

그리고 이것은 가져올 때 잘 작동합니다. 권한이없는 사용자는 자체 서버 프로세스를 다시 시작, 시작 및 중지 할 수 있습니다 (자동 코드 배포 용).

그러나 SMF 매니페스트를 내 보내면이 구성 데이터가 사라집니다. 해당 섹션에서 볼 수있는 것은 다음과 같습니다.

<property_group name='general' type='framework'>
  <property name='action_authorization' type='astring'/>
  <property name='value_authorization' type='astring'/>
</property_group>

왜 이런 일이 일어나는지 아는 사람이 있습니까? 내 구문이 잘못 되었습니까, 아니면 단순히 SMF를 잘못 사용하고 있습니까?



답변

svccfg (1M)가 깨져서 깨졌습니다.

2007 년에는 적절한 권한이있는 사용자 만 읽을 수있는 중요한 정보를 포함 할 수있는 속성 그룹을 허용하는 기능을 SMF에 추가했습니다. 아이디어는 속성 그룹에 “read_authorization”속성을 추가 할 수 있으며 해당 속성에 의해 명명 된 권한 중 하나를 소유하지 않거나 권한이없는 사람은 누구나 속성 값을 읽을 수 없다는 것입니다. 그룹에서. 이것은 이 커밋 에 통합되었으며 , 최소한 Sun ZFS 스토리지 제품에서 LDAP 비밀번호와 같은 것을 저장하는 데 사용됩니다.

이 작업의 일부로,이 값을 읽을 수있는 권한있는 사용자조차도 서비스 상태를 내보내거나 SMF 저장소의 아카이브를 생성하여 실수로 값을 노출하지 않도록하고자했습니다. 따라서 모든 속성 값을 명시 적으로 내보내는 svccfg의 내보내기 및 아카이브 명령에 ‘-a’플래그를 추가하고 읽기 보호 된 값을 제외하도록 기본값을 변경했습니다.

불행히도이 제한은 올바르게 적용되지 않습니다. 이 경우 “일반”속성 그룹에서 일부 속성 만 선택하고 값을 내보내는 것을 거부합니다. 나머지는 어떤 값도없이 내보내집니다. 불행히도 -a 옵션을 사용하면 도움이되지 않습니다. 관련 지점에 도달 할 때까지 더 이상 상황을 전달해야한다는 컨텍스트가 없기 때문입니다. 서비스 상태 변경을 허용하는 권한 부여의 ID가 실제로 중요하며 공격자에게 유용 할 수있는 권한 부여 ID는이 값이 이러한 값을 노출해야하는지 여부에 대해서는 의문의 여지가 있습니다. 의심 할 여지없이이 글을 썼을 때 다른 사람의 견해에서 명시 적으로 원하지 않는 한이를 제한하는 것이 합리적입니다. 그러나 이전 버전의 S10에서는 내 보낸 XML 및 아카이브에 포함되어 있으므로 호환되지 않는 변경이었습니다. 당신은 그것에 대해 화가 났을 때 용서받을 것입니다. 그러나 여기서 실제 문제는 문제의 속성 그룹이 “일반”인 경우 -a가 작동하지 않는다는 것입니다. 당신이 이것을 처음으로 치는 사람이 어떻게되는지 모르겠습니다.

이 페이지의 페이지에서이 문제를 따를 수 있습니다 . 그 동안 생성 된 XML에 속성 값을 수동으로 추가하여이 문제를 해결하는 것을 고려할 수 있습니다. 필요한 경우 svcprop (1)을 통해 읽을 수도 있습니다. 당신은 내 사과가 있습니다. 이 질문에 관심을 가져 주신 Deirdre Straughan에게 감사드립니다.


답변