This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

ผู้ใช้ บทบาท และสิทธิ์

SnapOtter มาพร้อมบทบาทในตัวสามบทบาท สิทธิ์แบบละเอียด 17 รายการ และรองรับบทบาทกำหนดเองพร้อมการควบคุมการเข้าถึงต่อเครื่องมือแบบไม่บังคับ หน้านี้ครอบคลุมโมเดลการให้สิทธิ์แบบเต็ม การกำหนดขอบเขต API key การจัดการทีม และการบันทึกการตรวจสอบ

หน้าที่เกี่ยวข้อง

OIDC / SSO | SAML SSO | SCIM Provisioning | Security & Hardening

ผู้ใช้

การสร้างผู้ใช้

ผู้ดูแลระบบสามารถสร้างผู้ใช้ผ่านแผงควบคุมผู้ดูแลระบบหรือเอ็นด์พอยต์ POST /api/auth/register ผู้ใช้แต่ละคนมีชื่อผู้ใช้ บทบาท การกำหนดทีม และที่อยู่อีเมลแบบไม่บังคับ

ผู้ดูแลระบบเริ่มต้น

ในการเริ่มต้นครั้งแรก SnapOtter จะสร้างบัญชีผู้ดูแลระบบเริ่มต้น ข้อมูลรับรองมาจากตัวแปรสภาพแวดล้อม:

ตัวแปรค่าเริ่มต้นคำอธิบาย
DEFAULT_USERNAMEadminชื่อผู้ใช้สำหรับบัญชีผู้ดูแลระบบเริ่มแรก
DEFAULT_PASSWORDadminรหัสผ่านสำหรับบัญชีผู้ดูแลระบบเริ่มแรก

ผู้ดูแลระบบเริ่มต้นจำเป็นต้องเปลี่ยนรหัสผ่านในการเข้าสู่ระบบครั้งแรก

ผู้ให้บริการยืนยันตัวตน

ผู้ใช้สามารถยืนยันตัวตนได้ผ่านหลายวิธี:

  • Local - ชื่อผู้ใช้และรหัสผ่านที่จัดเก็บในฐานข้อมูล SnapOtter
  • OIDC - ผู้ให้บริการ OpenID Connect ใด ๆ (ดู OIDC / SSO)
  • SAML - ผู้ให้บริการข้อมูลระบุตัวตน SAML 2.0 (ดู SAML SSO)
  • SCIM - การจัดสรรอัตโนมัติจากผู้ให้บริการข้อมูลระบุตัวตน (ดู SCIM Provisioning)

การปิดการยืนยันตัวตน

ตั้งค่า AUTH_ENABLED=false เพื่อปิดการยืนยันตัวตนทั้งหมด ในโหมดนี้จะใช้ผู้ใช้นิรนามสังเคราะห์ที่มีบทบาท admin สำหรับทุกคำขอ ไม่จำเป็นต้องเข้าสู่ระบบ

WARNING

การปิดการยืนยันตัวตนให้สิทธิ์ผู้ดูแลระบบเต็มรูปแบบแก่ใครก็ตามที่เข้าถึงอินสแตนซ์ได้ ใช้สิ่งนี้เฉพาะในสภาพแวดล้อมที่เชื่อถือได้เท่านั้น

บทบาทในตัว

SnapOtter มีบทบาทในตัวสามบทบาท ไม่สามารถแก้ไขหรือลบได้

Admin

สิทธิ์ทั้ง 17 รายการ ควบคุมอินสแตนซ์ได้อย่างเต็มรูปแบบ

tools:use files:own files:all apikeys:own apikeys:all pipelines:own pipelines:all settings:read settings:write users:manage teams:manage features:manage system:health audit:read compliance:manage webhooks:manage security:manage

Editor

สิทธิ์ 7 รายการ สามารถใช้เครื่องมือทั้งหมดและจัดการไฟล์และไปป์ไลน์ทั้งหมดได้ แต่ไม่สามารถเข้าถึงฟังก์ชันของผู้ดูแลระบบได้

tools:use files:own files:all apikeys:own pipelines:own pipelines:all settings:read

User

สิทธิ์ 5 รายการ สามารถใช้เครื่องมือและจัดการทรัพยากรของตนเองได้

tools:use files:own apikeys:own pipelines:own settings:read

การอ้างอิงสิทธิ์

สิทธิ์คำอธิบาย
tools:useใช้เครื่องมือประมวลผลใด ๆ
files:ownดูและจัดการไฟล์ของตนเอง
files:allดูและจัดการไฟล์ของผู้ใช้ทั้งหมด
apikeys:ownสร้างและจัดการ API key ของตนเอง
apikeys:allดู API key ของผู้ใช้ทั้งหมด
pipelines:ownสร้างและจัดการไปป์ไลน์ของตนเอง
pipelines:allดูและจัดการไปป์ไลน์ของผู้ใช้ทั้งหมด
settings:readดูการตั้งค่าอินสแตนซ์
settings:writeแก้ไขการตั้งค่าอินสแตนซ์
users:manageสร้าง อัปเดต และลบบัญชีผู้ใช้
teams:manageสร้าง อัปเดต และลบทีม
features:manageติดตั้งและจัดการบันเดิลฟีเจอร์ AI
system:healthเข้าถึงเอ็นด์พอยต์ health และ readiness
audit:readดูบันทึกการตรวจสอบและแสดงรายการบทบาท
compliance:manageจัดการวงจร GDPR และฟีเจอร์การปฏิบัติตามข้อกำหนด
webhooks:manageกำหนดค่า webhook ขาออก
security:manageจัดการการตั้งค่าความปลอดภัย (IP allowlist, การบังคับใช้ SSO)

บทบาทกำหนดเอง

ผู้ดูแลระบบที่มีสิทธิ์ security:manage สามารถสร้างบทบาทกำหนดเองผ่านแผงควบคุมผู้ดูแลระบบหรือ roles API การแสดงรายการบทบาทต้องใช้ audit:read

การสร้างบทบาทกำหนดเอง

bash
curl -X POST http://localhost:1349/api/v1/roles \
  -H "Authorization: Bearer si_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "reviewer",
    "description": "Can use tools and view all files",
    "permissions": ["tools:use", "files:own", "files:all", "settings:read"]
  }'

ชื่อบทบาทต้องมี 2-30 อักขระ เป็นตัวอักษรและตัวเลขพิมพ์เล็ก พร้อมยัติภังค์และขีดล่าง

สิทธิ์ที่สงวนไว้สำหรับผู้ดูแลระบบ

สิทธิ์สามรายการสงวนไว้สำหรับบทบาทในตัวและไม่สามารถกำหนดให้กับบทบาทกำหนดเองได้:

  • compliance:manage
  • webhooks:manage
  • security:manage

roles API จะปฏิเสธคำขอใด ๆ ที่มีสิทธิ์เหล่านี้ มีเพียงบทบาท admin ในตัวเท่านั้นที่มีสิทธิ์เข้าถึง

สิทธิ์ระดับเครื่องมือ

บทบาทกำหนดเองสามารถจำกัดว่าผู้ใช้เข้าถึงเครื่องมือใดได้บ้างแบบไม่บังคับ มีสองโหมดให้ใช้:

โหมดพฤติกรรมข้อกำหนดใบอนุญาต
categoryจำกัดตามโมดาลิตี (image, video, audio, document, file)ไม่มี (ฟรี)
toolจำกัดตาม ID ของเครื่องมือแต่ละตัวต้องใช้ฟีเจอร์เอ็นเทอร์ไพรส์ per_tool_permissions

เมื่อตั้งค่าโหมด tool แต่ฟีเจอร์เอ็นเทอร์ไพรส์ไม่พร้อมใช้งาน SnapOtter จะลดระดับอย่างนุ่มนวลและอนุญาตให้เข้าถึงเครื่องมือทั้งหมด

json
{
  "name": "image-only",
  "permissions": ["tools:use", "files:own"],
  "toolPermissions": {
    "mode": "category",
    "allowed": ["image"]
  }
}

การลบบทบาทกำหนดเอง

เมื่อลบบทบาทกำหนดเอง ผู้ใช้ทั้งหมดที่ได้รับมอบหมายบทบาทนั้นจะถูกกำหนดใหม่ไปยังบทบาท user โดยอัตโนมัติ

ทีม

ทีมจัดกลุ่มผู้ใช้เพื่อการจัดการพื้นที่จัดเก็บและการเก็บรักษา ทีม Default จะถูกสร้างในการเริ่มต้นครั้งแรก

ฟิลด์ชนิดคำอธิบาย
namestringชื่อทีมที่ไม่ซ้ำกัน (1-50 อักขระ)
storageQuotanumberขีดจำกัดพื้นที่จัดเก็บต่อทีมเป็นไบต์ (ใช้งานได้โดยไม่ต้องมีเอ็นเทอร์ไพรส์)
retentionHoursnumberลบเอาต์พุตอัตโนมัติหลังจากผ่านไปกี่ชั่วโมง (ต้องใช้ team_retention_overrides, เอ็นเทอร์ไพรส์)
legalHoldbooleanป้องกันการลบไฟล์ของสมาชิกทีมโดยอัตโนมัติ (ต้องใช้ legal_hold, เอ็นเทอร์ไพรส์)

INFO

ทีม Default ไม่สามารถลบได้ ทีมที่ยังมีสมาชิกอยู่ก็ไม่สามารถลบได้ ให้กำหนดสมาชิกใหม่ก่อน

API key

ผู้ใช้สามารถสร้าง API key สำหรับการเข้าถึงแบบโปรแกรม แต่ละคีย์ใช้คำนำหน้า si_ และแสดงเพียงครั้งเดียวในตอนสร้าง

สิทธิ์แบบกำหนดขอบเขต

API key สามารถมีอาร์เรย์ permissions แบบไม่บังคับได้ เมื่อตั้งค่าแล้ว สิทธิ์ที่มีผลสำหรับคำขอจะเป็น การตัดกัน ของสิทธิ์ตามบทบาทของผู้ใช้และสิทธิ์แบบกำหนดขอบเขตของคีย์ นี่หมายความว่า API key ไม่สามารถยกระดับเกินสิทธิ์ของตัวผู้ใช้เองได้

bash
curl -X POST http://localhost:1349/api/v1/api-keys \
  -H "Authorization: Bearer si_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "CI pipeline key",
    "permissions": ["tools:use", "files:own"],
    "expiresAt": "2027-01-01T00:00:00Z"
  }'

การหมดอายุ

คีย์รับ timestamp expiresAt แบบไม่บังคับ คีย์ที่หมดอายุจะถูกปฏิเสธในเวลายืนยันตัวตน

บันทึกการตรวจสอบ

SnapOtter บันทึกเหตุการณ์ที่เกี่ยวข้องกับความปลอดภัยในบันทึกการตรวจสอบแบบมีโครงสร้างที่จัดเก็บในตารางฐานข้อมูล audit_log

การดูบันทึกการตรวจสอบ

GET /api/v1/audit-log?page=1&limit=50&action=LOGIN_FAILED&from=2026-01-01T00:00:00Z&to=2026-12-31T23:59:59Z

ต้องใช้สิทธิ์ audit:read รองรับการแบ่งหน้า (page, limit) และตัวกรอง (action, ip, from, to)

การตรวจสอบการดำเนินการของเครื่องมือ

WARNING

เหตุการณ์ TOOL_EXECUTED จะไม่ถูกบันทึกโดยค่าเริ่มต้น เป็นการเลือกเข้าร่วมผ่านหนึ่งในสองเส้นทาง:

  1. ตั้งค่าการตั้งค่าผู้ดูแลระบบ auditToolOperations เป็น true
  2. ถือใบอนุญาตที่ใช้งานได้พร้อมฟีเจอร์ audit_export (มีให้ในทั้งแผนทีมและเอ็นเทอร์ไพรส์)

หากไม่มีสิ่งใดสิ่งหนึ่งเหล่านี้ การดำเนินการเครื่องมือแต่ละครั้งจะไม่ถูกบันทึกในบันทึกการตรวจสอบ

การเอ็กซ์พอร์ต

GET /api/v1/enterprise/audit/export?format=csv&from=2026-01-01T00:00:00Z

ต้องใช้สิทธิ์ audit:read และฟีเจอร์เอ็นเทอร์ไพรส์ audit_export (มีให้ในทั้งแผนทีมและเอ็นเทอร์ไพรส์) รองรับรูปแบบ CSV และ JSON กรองตาม action, actorId, targetType, targetId, from และ to

การลงนามแบบทนต่อการดัดแปลง

เมื่อเปิดใช้งาน แต่ละรายการในบันทึกการตรวจสอบจะถูกลงนามด้วย HMAC ที่ได้มาจาก DATA_ENCRYPTION_KEY สิ่งนี้ต้องการ:

  1. การตั้งค่า DATA_ENCRYPTION_KEY ในสภาพแวดล้อมของคุณ
  2. การเปิดใช้งานการตั้งค่าผู้ดูแลระบบ tamperResistantAudit
  3. ใบอนุญาตเอ็นเทอร์ไพรส์พร้อมฟีเจอร์ tamper_resistant_audit

การเก็บรักษา

ตั้งค่า AUDIT_RETENTION_DAYS เพื่อล้างรายการเก่าโดยอัตโนมัติ ค่าเริ่มต้นคือ 0 ซึ่งหมายความว่ารายการจะถูกเก็บไว้อย่างไม่มีกำหนด

การอ้างอิงเหตุการณ์

เหตุการณ์หมวดหมู่
LOGIN_SUCCESS, LOGIN_FAILEDAuthentication
OIDC_LOGIN_SUCCESS, OIDC_LOGIN_FAILEDAuthentication
SAML_LOGIN_SUCCESS, SAML_LOGIN_FAILEDAuthentication
LOGOUTAuthentication
USER_CREATED, USER_UPDATED, USER_DELETEDUser management
PASSWORD_CHANGED, PASSWORD_RESETUser management
MFA_ENROLLED, MFA_DISABLED, MFA_VERIFIED, MFA_VERIFY_FAILEDMFA
MFA_CHALLENGE_ISSUED, MFA_RECOVERY_USED, MFA_RESETMFA
ROLE_CREATED, ROLE_UPDATED, ROLE_DELETEDRoles
API_KEY_CREATED, API_KEY_DELETEDAPI keys
SETTINGS_UPDATED, IP_ALLOWLIST_UPDATEDSettings
FILE_UPLOADED, FILE_DELETEDFiles
TOOL_EXECUTEDTools (เลือกเข้าร่วม)
SCIM_USER_PROVISIONED, SCIM_USER_UPDATED, SCIM_USER_DEPROVISIONEDSCIM
SCIM_GROUP_SYNCEDSCIM
LEGAL_HOLD_APPLIED, LEGAL_HOLD_RELEASEDCompliance
GDPR_EXPORT_INITIATED, GDPR_USER_PURGED, GDPR_TEAM_PURGEDCompliance
CONFIG_EXPORTED, CONFIG_IMPORTEDConfiguration

การจัดการเซสชัน

เซสชันใช้คุกกี้ ควบคุมโดย SESSION_DURATION_HOURS (ค่าเริ่มต้น: 168 ชั่วโมง / 7 วัน)

การเปลี่ยนบทบาททำให้เซสชันเป็นโมฆะ

เมื่อผู้ดูแลระบบเปลี่ยนบทบาทของผู้ใช้ เซสชันที่ใช้งานอยู่ทั้งหมดของผู้ใช้นั้นจะถูกลบ ผู้ใช้ต้องเข้าสู่ระบบอีกครั้งเพื่อรับสิทธิ์ใหม่

การป้องกันเพื่อความปลอดภัย

  • การป้องกันผู้ดูแลระบบคนสุดท้าย: ผู้ดูแลระบบคนสุดท้ายที่เหลืออยู่ไม่สามารถถูกลดระดับไปยังบทบาทที่ต่ำกว่าได้ API จะคืนค่าข้อผิดพลาดหากคุณพยายามทำ
  • การป้องกันการลบตนเอง: ผู้ดูแลระบบไม่สามารถลบบัญชีของตนเองผ่าน API ได้