Tại sao SMF kê khai mất dữ liệu cấu hình khi xuất trên SmartOS?


10

Tôi đang chạy một quy trình máy chủ trong SMF (Cơ sở quản lý máy chủ) trên hình ảnh SmartOS Base64 1.8.1 của Joyent.

Đối với những người không yêu cầu SmartOS, đây là bản phân phối IllumOS dựa trên đám mây với KVM. Nhưng về cơ bản nó giống như Solaris và thừa hưởng từ OpenSolaris. Vì vậy, ngay cả khi bạn chưa sử dụng SmartOS, tôi vẫn hy vọng khai thác được một số kiến ​​thức về Solaris trên ServerFault.

Vấn đề của tôi là tôi muốn một người dùng không có đặc quyền được phép khởi động lại một dịch vụ mà họ sở hữu. Tôi đã tìm ra cách để làm điều đó bằng cách sử dụng RBAC và thêm ủy quyền /etc/security/auth_attrvà liên kết ủy quyền đó với người dùng của tôi.

Sau đó tôi đã thêm phần sau vào bảng kê khai SMF của mình cho dịch vụ:

<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>

Và điều này hoạt động tốt khi nhập khẩu. Người dùng không có đặc quyền của tôi được phép khởi động lại, bắt đầu và dừng quá trình máy chủ của riêng mình (đây là để triển khai mã tự động).

Tuy nhiên, nếu tôi xuất bảng kê khai SMF, dữ liệu cấu hình này sẽ biến mất ... tất cả những gì tôi thấy trong phần đó là:

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

Có ai biết tại sao điều này xảy ra? Là cú pháp của tôi sai, hay tôi chỉ đơn giản là sử dụng SMF không chính xác?


1
Hmmm Bình luận dường như đã biến mất từ ​​đây mà không có từ hoặc đề cập.
redsapes

Câu trả lời:


16

Bởi vì svccfg (1M) bị hỏng, và tôi đã phá vỡ nó.

Quay trở lại năm 2007, tôi đã thêm một tính năng vào SMF cho phép các nhóm thuộc tính có thể chứa thông tin nhạy cảm, chỉ người dùng có thể đọc được với các đặc quyền phù hợp. Ý tưởng là bạn có thể thêm thuộc tính "read_ Authorization" vào nhóm thuộc tính và bất kỳ ai không có đặc quyền (về cơ bản là root) cũng không sở hữu một trong những ủy quyền được đặt tên bởi tài sản đó sẽ không thể đọc các giá trị của bất kỳ thuộc tính nào trong nhóm. Điều này đã được tích hợp theo cam kết này và được sử dụng bởi (ít nhất) các sản phẩm lưu trữ Sun ZFS để lưu trữ những thứ như mật khẩu LDAP.

Là một phần của công việc đó, chúng tôi muốn đảm bảo rằng ngay cả những người dùng đặc quyền có thể đọc các giá trị này sẽ không vô tình làm lộ chúng bằng cách xuất trạng thái của dịch vụ hoặc tạo kho lưu trữ của kho lưu trữ SMF. Vì vậy, tôi đã thêm cờ '-a' vào các lệnh xuất và lưu trữ trong svccfg để xuất khẩu rõ ràng tất cả các giá trị thuộc tính và thay đổi mặc định để loại trừ bất kỳ lệnh nào được bảo vệ đọc.

Thật không may, hạn chế này không được áp dụng chính xác; trong trường hợp này, chúng tôi chỉ đơn giản từ chối xuất bất kỳ ngoại trừ một vài thuộc tính được chọn trong nhóm thuộc tính "chung" có giá trị. Phần còn lại được xuất mà không có bất kỳ giá trị nào, đó là những gì bạn đang thấy. Và thật không may, sử dụng tùy chọn -a sẽ không giúp ích ở đây, bởi vì khi chúng ta đạt đến điểm có liên quan, chúng ta không còn bối cảnh cần thiết để biết rằng bạn đã vượt qua điều đó. Thậm chí công bằng khi đặt câu hỏi liệu cờ này có được yêu cầu để lộ các giá trị này hay không: danh tính của các ủy quyền cho phép thay đổi trạng thái dịch vụ thực sự nhạy cảm và sẽ hữu ích cho kẻ tấn công. Không còn nghi ngờ gì nữa, đó là trong tâm trí của tôi khi tôi viết bài này, và thật hợp lý để hạn chế điều đó khỏi quan điểm của người khác trừ khi nó rõ ràng mong muốn. Nhưng trong các phiên bản trước của S10, xuất XML và tài liệu lưu trữ chứa nó, vì vậy nó chắc chắn là một thay đổi không tương thích. Bạn sẽ được tha thứ vì buồn về điều đó. Nhưng vấn đề thực sự ở đây là - không hoạt động khi nhóm bất động sản được đề cập là "chung". Làm thế nào bạn là người đầu tiên đạt được điều này tôi không biết.

Bạn có thể theo dõi vấn đề này tại trang của nó, ở đây . Trong thời gian này, bạn có thể xem xét làm việc xung quanh nó bằng cách thêm thủ công các giá trị của các thuộc tính trong XML được tạo. Lưu ý rằng bạn cũng có thể đọc chúng qua svcprop (1) nếu cần. Bạn có lời xin lỗi của tôi. Cảm ơn Deirdre Strau Afghanistan đã chú ý đến câu hỏi này.


1
Ồ Cảm ơn Keith. Cho rằng bạn là người đã viết mã gốc, tôi khá chắc chắn rằng tôi có thể đánh dấu câu trả lời này là chính xác :-) Cảm ơn bạn rất nhiều vì nền tảng chi tiết cho vấn đề này.
Scott
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.