계정 수정

지정한 계정의 정보를 수정합니다.

필요 권한

관리자 이상의 계정으로 이용할 수 있습니다. 단, 본인 계정은 관리자 권한이 없어도 본인이 직접 수정할 수 있습니다. 이 경우 성명·이메일·직급·부서·내선번호·휴대번호·언어·첫페이지 메뉴 ID·API 키·암호를 제외한 나머지 항목(역할, 인증 모드, 접속 허용 IP, 세션 유휴 설정, 로그인 잠금 설정, MFA 설정, 테이블·계정 그룹 권한 등)은 값을 전달해도 오류 없이 무시되며 기존 값이 유지됩니다(자세한 항목은 아래 참고). 본인보다 상위 권한의 계정은 수정할 수 없습니다.

HTTP 요청

PUT /api/sonar/users/:guid
cURL 예시
curl -H "Authorization: Bearer <API_KEY>" \
     -d login=jsmith \
     -d role_id=2 \
     -d name="John Smith" \
     -d idle_behavior=lock \
     -d idle_timeout=600 \
     -d email="john.smith@example.com" \
     -X PUT \
     https://HOSTNAME/api/sonar/users/bfd00bb0-be99-4fd5-8380-166f544975fa
요청 매개변수
경로 매개변수
키타입설명비고
guid문자열계정 식별자36자
요청 본문 매개변수
키필수타입설명비고
loginO문자열로그인 계정 이름최대 255자
role_idO32비트 정수역할 ID1, 2, 3, 4 중 하나. 하단 참조
nameO문자열사용자 성명최소 1자, 최대 50자
emailO문자열이메일 주소최소 1자, 최대 255자
passwordX문자열암호암호 규칙 준수(기본 최소 9자·최대 100자). 미지정 시 기존 암호 유지
api_keyX문자열API 키36자 GUID. 미지정 시 기존 API 키 유지
titleX문자열직함최대 20자. 미지정 시 기존 값 삭제
deptX문자열부서최대 50자. 미지정 시 기존 값 삭제
phoneX문자열내선번호최대 50자. 미지정 시 기존 값 삭제
mobileX문자열휴대번호최대 50자. 미지정 시 기존 값 삭제
localeX문자열언어en 혹은 ko. 미지정 시 기존 값 삭제
home_menu_idX32비트 정수첫페이지 메뉴 ID미지정 시 기존 값 삭제
readable_tablesX문자열 목록읽기 허용 테이블 목록쉼표(,)로 구분. 미지정 시 기존 값 삭제
user_group_guidsX문자열 목록계정 그룹 GUID 목록쉼표(,)로 구분. 미지정 시 기존 값 삭제
trust_hostsX문자열 목록접속 허용 IP쉼표(,)로 구분. 미지정 시 기존 값 삭제
idle_behaviorX문자열세션 유휴 동작lock 또는 logout. 미지정 시 기존 값 삭제
idle_timeoutX32비트 정수세션 유휴 기준 시간 (초)최소 0, 최대 604800. 기본값 600
password_expirationX32비트 정수암호 만료 기준 일자시스템 기본값 -1, 무제한 0, 최소 7, 최대 3650
login_lock_countX32비트 정수로그인 잠금 기준 횟수최소 0, 최대 5. 기본값 5
login_lock_intervalX32비트 정수로그인 잠금 유지 시간 (분)최소 1, 최대 100000000, 기본값 10
auth_modeX32비트 정수인증 모드모든 인증 방식 시도 0, 외부 인증 전용 1. 기본값 0
mfa_enabledX불리언MFA 활성화 여부true 또는 false
mfa_typeX문자열MFA 유형OTP, MAIL, SMS, PASSWORD 중 하나(대문자). mfa_enabled가 true이면 필수. MAIL은 메일 서버 설정 필요
old_passwd_countX32비트 정수암호 기억 개수최소 0. 미지정 시 시스템 기본값(-1) 적용
Note
클러스터 관리자가 아닌 계정이 본인 계정을 수정하는 경우 login, role_id, auth_mode, trust_hosts, idle_behavior, idle_timeout, password_expiration, login_lock_count, login_lock_interval, mfa_enabled, mfa_type, old_passwd_count, readable_tables, user_group_guids 값을 전달해도 오류 없이 무시되며 기존 값이 그대로 유지됩니다. 단, role_id에 현재 역할과 다른 값을 지정하면 무시되지 않고 오류가 반환됩니다(아래 자기 자신의 역할을 변경 시도한 경우 참고).

역할 ID

  • (1) 클러스터 관리자: 클러스터 설정을 포함한 모든 관리 권한 부여
  • (2) 관리자: 테넌트에 한정된 관리 권한 부여
  • (3) 사용자: 대시보드, 위젯, 데이터셋, 티켓과 같은 사용자 객체 편집과 조회성 작업 권한
  • (4) 대시보드 게시: 대시보드·위젯·데이터셋·테이블을 조회하는 권한만 부여

암호 규칙

  • 최소 9자 이상
  • 영문, 숫자, 특수문자 혼합
  • 3자 이상 연속되는 동일 문자는 허용하지 않음

위 규칙은 기본 암호 정책 기준이며, 시스템에 설정된 암호 정책에 따라 최소·최대 길이와 복잡도 요건이 달라질 수 있습니다. 자세한 내용은 암호 정책을 참고하세요.

정상 응답

{}

오류 응답

필수 매개변수가 누락된 경우

HTTP 상태 코드 400 응답

{
  "error_code": "null-argument",
  "error_msg": "login should be not null"
}
매개변수 값의 길이가 잘못된 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "'login' must be shorter than or equal to 255 characters."
}
로그인 이름 형식이 잘못된 경우

HTTP 상태 코드 400 응답. 로그인 이름은 영문, 숫자, 마침표(.), 밑줄(_)로 시작하고 이어서 하이픈(-)까지 사용할 수 있습니다.

{
  "error_code": "invalid-argument",
  "error_msg": "invalid login: user@name"
}
계정 식별자가 GUID 형식이 아닌 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-param-type",
  "error_msg": "guid should be guid type."
}
계정이 존재하지 않는 경우

HTTP 상태 코드 500 응답

{
  "error_code": "illegal-state",
  "error_msg": "user not found: bfd00bb0-be99-4fd5-8380-166f544975fa"
}
로그인 계정 이름이 중복된 경우

HTTP 상태 코드 500 응답

{
  "error_code": "illegal-state",
  "error_msg": "duplicated user login: jsmith"
}
이메일 형식이 잘못된 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "'email' parameter is not a valid email address: foo"
}
암호 인증 모드에서 암호가 누락된 경우

HTTP 상태 코드 500 응답. 기존 계정이 외부 인증 전용이었다가 auth_mode를 0으로 변경하는 경우 암호를 지정해야 합니다.

{
  "error_code": "illegal-state",
  "error_msg": "password should be not null"
}
암호 복잡도가 충분하지 않은 경우

암호 검증은 계정 수정 트랜잭션 내부에서 수행되어, 검증에 실패하면 원래의 오류가 아니라 트랜잭션 실패로 재포장되어 500/illegal-state로 반환되며 error_msg 앞에 cannot update user, guid=<대상 계정 GUID> / 접두사가 붙습니다. 아래는 각 조건별 예시입니다.

HTTP 상태 코드 500 응답. 암호에 로그인 계정 이름을 포함

{
  "error_code": "illegal-state",
  "error_msg": "cannot update user, guid=bfd00bb0-be99-4fd5-8380-166f544975fa / password contains login name"
}

HTTP 상태 코드 500 응답. 암호가 최소 길이보다 짧음

{
  "error_code": "illegal-state",
  "error_msg": "cannot update user, guid=bfd00bb0-be99-4fd5-8380-166f544975fa / insufficient password length (minimum 9 characters)"
}

HTTP 상태 코드 500 응답. 암호가 최대 길이를 초과함

{
  "error_code": "illegal-state",
  "error_msg": "cannot update user, guid=bfd00bb0-be99-4fd5-8380-166f544975fa / password should not exceed maximum length (maximum 100 characters)"
}

HTTP 상태 코드 500 응답. 암호에 필요한 문자 종류(영문, 숫자, 특수문자)가 누락됨

{
  "error_code": "illegal-state",
  "error_msg": "cannot update user, guid=bfd00bb0-be99-4fd5-8380-166f544975fa / password should include: alphabet, digit, special"
}

HTTP 상태 코드 500 응답. 암호에 동일 문자가 3회 이상 연속됨

{
  "error_code": "illegal-state",
  "error_msg": "cannot update user, guid=bfd00bb0-be99-4fd5-8380-166f544975fa / password should not repeat same 3 characters"
}
최근 사용한 암호로 다시 변경하려는 경우

HTTP 상태 코드 500 응답. old_passwd_count에 지정된 개수만큼 보관된 이전 암호와 동일한 암호로는 변경할 수 없습니다. 위와 같은 이유로 error_msg에 cannot update user, guid=<대상 계정 GUID> / 접두사가 붙습니다.

{
  "error_code": "illegal-state",
  "error_msg": "cannot update user, guid=bfd00bb0-be99-4fd5-8380-166f544975fa / cannot-reuse-old-password"
}
지원하지 않는 언어를 지정한 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "unsupported locale: ru"
}
정의되지 않은 인증 모드를 지정한 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "auth_mode should be 0 or 1. input is 2."
}
자기 자신의 역할을 변경 시도한 경우

HTTP 상태 코드 500 응답

{
  "error_code": "illegal-state",
  "error_msg": "cannot update role by yourself."
}
상위 권한의 계정 변경을 시도한 경우

HTTP 상태 코드 500 응답

{
  "error_code": "illegal-state",
  "error_msg": "no permission: cannot grant or modify cluster admin role by jsmith"
}
존재하지 않는 역할 ID를 지정한 경우

HTTP 상태 코드 500 응답

{
  "error_code": "illegal-state",
  "error_msg": "unknown role id: 5"
}
존재하지 않는 메뉴 ID를 지정한 경우

HTTP 상태 코드 500 응답

{
  "error_code": "illegal-state",
  "error_msg": "unknown menu id: 0"
}
존재하지 않거나 접근 불가 그룹을 지정한 경우

HTTP 상태 코드 500 응답

{
  "error_code": "illegal-state",
  "error_msg": "user group not found: 28c1251b-2f7c-4c58-95a1-fc4a1ead877e"
}