감사 로그
감사 로그 (Audit logs)
보안, 규정 준수, 운영 가시성을 위해 LangSmith 조직 전반의 관리 작업을 추적하고 검토할 수 있어요. LangSmith 감사 로그는 조직 내에서 수행된 관리 및 구성 작업의 위조 방지 기록을 제공합니다.
출처: 문서
참고: 감사 로그는 Enterprise 요금제에서 제공됩니다. Enterprise 업그레이드에 관심이 있다면 영업팀에 문의하세요.
본문
LangSmith 감사 로그는 조직 내에서 수행된 관리 및 구성 작업의 위조 방지(tamper-resistant) 기록을 제공합니다. 다음과 같은 질문에 답하는 데 도움이 됩니다:
- API 키, 데이터셋 또는 배포를 삭제한 사람은 누구?
- 새 멤버가 초대되고, 역할이 수정되고, 예제가 업데이트된 시기는 언제?
- 어떤 결제, SSO 또는 데이터 보존 구성이 변경되었는가?
- 어떤 데이터셋, 트레이싱 프로젝트 또는 프롬프트 웹훅이 수정되었나?
감사 로그는 보안 검토, 규정 준수 요구 사항, 일반적인 운영 가시성에 유용합니다.
사전 준비 사항
- 조직이 Enterprise 요금제여야 합니다.
- 감사 로그를 보려면 Organization Admin 또는 Organization Operator 역할(
organization:manage권한)이 있어야 합니다.
무엇이 기록되는가
감사 로그는 조직 설정, 구성원, 자격 증명, 워크스페이스 및 기타 리소스에 대한 변경을 기록합니다. 각 이벤트에는 타임스탬프, 행위자(actor), 작업 이름, 영향받은 리소스, 성공 여부가 포함됩니다. 전체 작업 이름 목록은 추적 작업 레퍼런스를 참고하세요.
UI에서 감사 로그 보기
Organization Admin과 Organization Operator는 Organization Settings > Audit logs에서 감사 로그를 탐색할 수 있습니다.
표는 각 이벤트의 시간, 행위자, 워크스페이스, 작업, 상태, 영향받은 리소스를 보여줍니다. 행의 타임스탬프를 클릭하면 사이드 패널에서 전체 원시 이벤트를 JSON으로 열 수 있습니다.
표 위의 필터를 사용해 결과를 좁힙니다:
- 시간 범위 (Time range)
- 워크스페이스 (Workspace)
- 작업 (Operation)
- 행위자 (Actor) — 특정 사용자, API 키 또는 서비스 키
- 리소스 ID (Resource ID)
감사 로그는 API로도 제공됩니다.
보존
감사 로그는 최대 400일 동안 보존됩니다. 400일보다 오래된 이벤트는 자동으로 제거될 수 있습니다.
자체 호스팅 배포에서 감사 로그 활성화
감사 로그는 Helm 차트 0.12.33 이상을 실행하는 자체 호스팅 LangSmith 인스턴스에서 사용할 수 있습니다. 개별 작업의 적용 범위는 시간이 지나면서 확장되었습니다 — 각 작업이 도입된 차트 버전은 자체 호스팅 버전 가용성을 참고하세요.
업그레이드한 후 다음 옵션 중 하나를 사용해 감사 로그를 활성화합니다:
-
특정 조직에 활성화: LangSmith PostgreSQL 데이터베이스에 대해 다음을 실행하고,
<organization_id>를 UI의 조직 설정 페이지에서 복사한 ID로 바꿉니다:UPDATE organizations SET config = config || '{"can_use_audit_logs": true}' WHERE id = '<organization_id>' AND NOT is_personal; -
모든 조직에 활성화:
values.yaml의commonEnv에 다음 환경 변수를 추가합니다:DEFAULT_ORG_FEATURE_CAN_USE_AUDIT_LOGS: "true"참고: 이 환경 변수는 개인 조직에는 효과가 없습니다.
자체 호스팅 릴리스에 대한 자세한 내용은 자체 호스팅 변경 로그를 참고하세요.
API로 감사 로그 쿼리
GET /api/v1/audit-logs 엔드포인트(API 레퍼런스)를 사용해 감사 로그 이벤트를 검색합니다. 결과는 OCSF API Activity 스키마를 따릅니다.
예시 요청
curl -G \
'https://api.smith.langchain.com/api/v1/audit-logs' \
-H 'accept: application/json' \
-H 'X-API-Key: *** \
-H 'X-Organization-Id: abc123...' \
-d 'limit=2' \
--data-urlencode 'start_time=2026-01-01T18:35:16.232Z' \
--data-urlencode 'end_time=2026-01-13T18:35:16.232Z' \
--data-urlencode 'operations=create_api_key' \
--data-urlencode 'operations=delete_api_key'
응답 형식
감사 로그 이벤트는 OCSF v1.7.0 API Activity (Class UID 6003) 형식으로 반환됩니다. 주요 필드:
| 필드 | 설명 |
|---|---|
actor.user.uid |
작업을 수행한 사용자의 UUID. |
actor.user.credential_uid |
요청을 인증하는 데 사용된 API 키, PAT 또는 서비스 키의 UUID. 사용자가 세션(예: UI)으로 인증한 경우 null. |
api.operation |
LangSmith 작업 이름 (예: create_api_key, delete_workspace). 모든 값은 추적 작업 레퍼런스 참고. |
status |
Success, Failure, 또는 Unknown. |
resources |
작업의 영향을 받은 리소스의 UUID 목록 (예: 업데이트된 역할, 생성된 워크스페이스). |
metadata.uid |
이 감사 로그 이벤트의 고유 식별자. |
unmapped.original_audit_log |
organization_id와 workspace_id를 포함한 전체 LangSmith 네이티브 감사 로그 기록. |
unmapped.original_audit_log.enrichments.resource_owner_ls_user_id |
작업이 작용한 리소스를 소유한 멤버의 UUID. 개인 접근 토큰 비활성화/삭제 같은 작업에 기록됩니다. actor.user.uid와 다른 값은 관리자가 다른 멤버의 리소스에 행동했음을 의미합니다. |
외부 시스템으로 전달
감사 로그 이벤트를 외부 SIEM 또는 로깅 플랫폼으로 전달하려면, 매 시간 이전 한 시간의 이벤트를 가져오는 예약 함수를 실행할 수 있습니다. 예를 들어 AWS Lambda + EventBridge Scheduler를 사용하면 실패가 dead-letter 큐에 들어가 어느 시간대를 재시도해야 하는지 알 수 있습니다.
추적 작업 레퍼런스
| 카테고리 | 작업 (api.operation) |
|---|---|
| API 키 및 자격 증명 | create_api_key, delete_api_key, create_personal_access_token, delete_personal_access_token, create_service_key, delete_service_key, update_service_key, create_service_account, delete_service_account, revoke_personal_access_token, list_org_personal_access_tokens, list_all_org_personal_access_tokens, list_org_service_keys |
| 역할 | create_role, update_role, delete_role |
| 조직 | create_organization, create_provisioned_saas_org, create_tenant, invite_provisioned_org_member, claim_pending_organization_invite, delete_pending_organization_invite |
| 조직 멤버 | invite_user_to_org, invite_users_to_org_batch, update_org_member, delete_org_member, delete_org_pending_member, add_basic_auth_users_to_org, update_basic_auth_user |
| SSO 및 인증 | create_sso_settings, update_sso_settings, delete_sso_settings, update_login_methods, update_default_sso_provision_organization, get_sso_settings, get_sso_settings_current, get_login_methods, send_sso_email_confirmation, confirm_sso_user_email, login |
| SCIM 프로비저닝 | create_scim_token, update_scim_token, delete_scim_token, create_scim_user, update_scim_user, delete_scim_user, create_scim_group, update_scim_group, delete_scim_group |
| 결제 및 사업자 정보 | update_organization_info, update_business_info, update_payment_plan, update_payment_method, create_payment_setup_intent, create_payment_checkout_session, create_payment_account_link |
| 워크스페이스 | create_workspace, update_workspace, delete_workspace, add_member_to_workspace, add_members_to_workspace_batch, delete_workspace_member, update_workspace_member, delete_workspace_pending_member, claim_pending_workspace_invite, delete_pending_workspace_invite, update_workspace_secrets, unshare_entities, set_tenant_handle |
| 데이터 보존 및 사용량 한도 | update_ttl_settings, update_usage_limit, delete_usage_limit |
| 트레이싱 프로젝트 | update_tracer_session, delete_tracer_session, delete_tracer_sessions |
| 런 및 트레이스 | query_run, query_runs, query_trace, query_trace_messages, batch_query_trace_messages, query_threads, query_thread_traces, read_run, read_runs, delete_runs, get_run_cluster, generate_runs_query |
| 데이터셋 | create_dataset, create_csv_dataset, update_dataset, delete_dataset, delete_datasets, update_dataset_version, update_dataset_splits, share_dataset, unshare_dataset, clone_dataset, download_dataset, generate_dataset, generate_shared_dataset_query, get_dataset_comparison_view, stream_dataset_comparison_view, read_dataset_delta, read_shared_delta, read_shared_delta_stream, create_experiment_via_upload, create_playground_experiment, create_comparative_experiment, delete_comparative_experiment |
| 예제 | create_example, create_examples, update_example, update_examples, delete_example, delete_examples, read_example, read_examples, get_example, list_examples, sync_examples, validate_example, validate_examples |
| 실험 | create_experiment_view_override, update_experiment_view_override, delete_experiment_view_override, get_experiment_view_override, get_experiment_view_overrides, evaluate_experiment |
| 평가기 | create_evaluator, update_evaluator, delete_evaluator, bulk_delete_evaluators, execute_custom_code |
| 피드백 | create_feedback_config, update_feedback_config, delete_feedback_config, create_feedback_formula, update_feedback_formula, delete_feedback_formula, read_feedback, read_feedbacks, stream_feedback_delta |
| 어노테이션 큐 | create_annotation_queue, update_annotation_queue, delete_annotation_queue, delete_annotation_queues, populate_annotation_queue, export_annotation_queue, add_annotation_queue_reviewer, remove_annotation_queue_reviewer, add_runs_to_annotation_queue, create_annotation_queue_run_status, update_annotation_queue_run, get_annotation_queue_run, get_annotation_queue_runs, delete_annotation_queue_run, delete_annotation_queue_runs, resolve_annotation_queue_run, get_pairwise_queue, list_pairwise_queues, list_pairwise_entries |
| 경고 | create_alert_rule, update_alert_rule, delete_alert_rule, test_alert_rule |
| 필터 뷰 | create_filter_view, update_filter_view, delete_filter_view, rename_filter_view |
| 프롬프트 커밋 및 허브 | create_commit, create_directory_commit, delete_directory, create_hub_environment, update_hub_environment, delete_hub_environment |
| 프롬프트 캔버스 빠른 동작 | create_prompt_canvas_quick_action, update_prompt_canvas_quick_action, delete_prompt_canvas_quick_action |
| 프롬프트 웹훅 | create_prompt_webhook, update_prompt_webhook, delete_prompt_webhook, test_prompt_webhook |
| 배포 | create_deployment, update_deployment, delete_deployment |
| 벌크 내보내기 | create_bulk_export, cancel_bulk_export, get_bulk_export, get_bulk_export_run, get_bulk_export_runs, get_bulk_export_runs_filtered, list_bulk_exports, create_bulk_export_destination, update_bulk_export_destination, read_bulk_export_destination, list_bulk_export_destinations |
| 리소스 태그 | create_tag_key, update_tag_key, delete_tag_key, create_tag_value, update_tag_value, delete_tag_value, create_tagging, delete_tagging |
| 접근 정책 | create_access_policy, delete_access_policy, list_access_policies, read_access_policy, attach_access_policies, read_role_access_policies |
| 커스텀 차트 | create_chart, update_chart, delete_chart, read_chart, read_charts, read_chart_preview, create_chart_section, update_chart_section, delete_chart_section, clone_chart_section, read_chart_section, create_org_chart, update_org_chart, delete_org_chart, create_org_chart_section, update_org_chart_section, delete_org_chart_section, read_tracing_dashboard |
| 모델 가격 | create_model_price_map, update_model_price_map, delete_model_price_map |
| MCP 서버 및 도구 | create_mcp_server, update_mcp_server, delete_mcp_server, register_mcp_server_oauth, mcp_proxy, create_mcp_vendor_settings, update_mcp_vendor_settings, delete_mcp_vendor_settings, invalidate_mcp_tools_cache, create_tool, update_tool, delete_tool |
| 게이트웨이 정책 | create_gateway_policy, update_gateway_policy, delete_gateway_policy |
| Forge 구성 | create_forge_configuration, update_forge_configuration, delete_forge_configuration, trigger_forge_configuration |
| Insights 작업 | create_insights_job, update_insights_job, delete_insights_job, create_insights_job_config, update_insights_job_config, delete_insights_job_config, generate_insights_job_config, get_insights_job_runs |
| Fleet 사용량 한도 및 웹훅 | create_fleet_usage_limit, update_fleet_usage_limit, delete_fleet_usage_limit, create_fleet_webhook, update_fleet_webhook, delete_fleet_webhook, test_fleet_webhook |
| 샌드박스 프록시 프로필 | create_sandbox_proxy_profile, update_sandbox_proxy_profile, delete_sandbox_proxy_profile |
| Playground 설정 | create_playground_settings, update_playground_settings, delete_playground_settings |
| 자체 호스팅 라이선스 | create_self_hosted_customer, update_self_hosted_customer, mint_self_hosted_license, update_self_hosted_license |
| 기능 모델 기본값 | upsert_feature_default_model, delete_feature_default_model, upsert_feature_disabled_model, delete_feature_disabled_model |
| 온보딩 | create_onboarding_state, update_onboarding_state |
| NPS | submit_nps_response |
자체 호스팅 버전 가용성
다음 목록은 각 작업이 도입된 자체 호스팅 Helm 차트 버전을 제공합니다. 작업은 이후 모든 버전에서 사용할 수 있습니다. 이 섹션은 자체 호스팅 배포에만 적용됩니다. LangSmith 클라우드에서는 나열된 모든 작업을 사용할 수 있습니다.
참고:
0.14.x및 이전 버전은 안정 릴리스입니다.0.15.0-rc.*에 도입된 작업은 미리보기 채널에서 제공되며0.15.0안정 릴리스에서 일반적으로 사용 가능해집니다. 채널에 대한 자세한 내용은 릴리스 정책을 참고하세요.
0.12.33
add_member_to_workspace, add_members_to_workspace_batch, cancel_bulk_export, create_api_key, create_bulk_export, create_bulk_export_destination, create_personal_access_token, create_service_key, create_tag_key, create_tag_value, create_tagging, create_workspace, delete_api_key, delete_personal_access_token, delete_service_key, delete_tag_key, delete_tag_value, delete_tagging, delete_usage_limit, delete_workspace, delete_workspace_member, delete_workspace_pending_member, set_tenant_handle, unshare_entities, update_organization_info, update_tag_key, update_tag_value, update_ttl_settings, update_usage_limit, update_workspace, update_workspace_member, update_workspace_secrets
0.12.34
add_basic_auth_users_to_org, clone_chart_section, confirm_payment_checkout_session, create_chart, create_chart_section, create_deployment, create_model_price_map, create_org_chart, create_org_chart_section, create_payment_account_link, create_payment_checkout_session, create_payment_setup_intent, create_role, create_sso_settings, delete_chart, delete_chart_section, delete_deployment, delete_model_price_map, delete_org_chart, delete_org_chart_section, delete_org_member, delete_org_pending_member, delete_role, delete_sso_settings, invite_user_to_org, invite_users_to_org_batch, update_basic_auth_user, update_business_info, update_chart, update_chart_section, update_default_sso_provision_organization, update_deployment, update_login_methods, update_model_price_map, update_org_chart, update_org_chart_section, update_org_member, update_payment_method, update_payment_plan, update_role, update_sso_settings
0.13.3
update_bulk_export_destination
0.13.32
clone_dataset, create_comparative_experiment, create_csv_dataset, create_dataset, create_example, create_examples, create_experiment_via_upload, create_playground_experiment, create_prompt_webhook, delete_comparative_experiment, delete_dataset, delete_datasets, delete_example, delete_examples, delete_prompt_webhook, delete_tracer_session, delete_tracer_sessions, read_bulk_export_destination, share_dataset, test_prompt_webhook, unshare_dataset, update_dataset, update_dataset_splits, update_dataset_version, update_example, update_examples, update_prompt_webhook, update_tracer_session
0.13.37
attach_access_policies, create_access_policy, create_scim_group, create_scim_token, create_scim_user, delete_access_policy, delete_scim_group, delete_scim_token, delete_scim_user, list_access_policies, read_access_policy, read_role_access_policies, update_scim_group, update_scim_token, update_scim_user
0.15.0-rc.1
add_annotation_queue_reviewer, add_runs_to_annotation_queue, batch_query_trace_messages, bulk_delete_evaluators, claim_pending_organization_invite, claim_pending_workspace_invite, confirm_sso_user_email, count_examples, create_alert_rule, create_annotation_queue, create_annotation_queue_run_status, create_commit, create_directory_commit, create_evaluator, create_experiment_view_override, create_feedback_config, create_feedback_formula, create_filter_view, create_fleet_usage_limit, create_fleet_webhook, create_forge_configuration, create_gateway_policy, create_hub_environment, create_insights_job, create_insights_job_config, create_mcp_server, create_mcp_vendor_settings, create_onboarding_state, create_organization, create_playground_settings, create_prompt_canvas_quick_action, create_sandbox_proxy_profile, create_service_account, create_tenant, create_tool, delete_alert_rule, delete_annotation_queue, delete_annotation_queue_run, delete_annotation_queue_runs, delete_annotation_queues, delete_directory, delete_evaluator, delete_experiment_view_override, delete_feature_default_model, delete_feature_disabled_model, delete_feedback_config, delete_feedback_formula, delete_filter_view, delete_fleet_usage_limit, delete_fleet_webhook, delete_forge_configuration, delete_gateway_policy, delete_hub_environment, delete_insights_job, delete_insights_job_config, delete_mcp_server, delete_mcp_vendor_settings, delete_pending_organization_invite, delete_pending_workspace_invite, delete_playground_settings, delete_prompt_canvas_quick_action, delete_runs, delete_sandbox_proxy_profile, delete_service_account, delete_tool, diff_dataset_versions, download_dataset, evaluate_experiment, execute_custom_code, export_annotation_queue, export_granular_usage_csv, export_usage_backfill_csv, generate_dataset, generate_insights_job_config, generate_runs_query, get_annotation_queue_run, get_annotation_queue_runs, get_bulk_export, get_bulk_export_run, get_bulk_export_runs, get_bulk_export_runs_filtered, get_experiment_view_override, get_experiment_view_overrides, get_pairwise_queue, get_run_cluster, get_sso_settings, get_sso_settings_current, get_usage, list_annotation_queue, list_bulk_exports, list_org_service_keys, list_pairwise_entries, list_pairwise_queues, login, mcp_proxy, mint_self_hosted_license, populate_annotation_queue, query_run, query_runs, query_threads, query_thread_traces, query_trace, query_trace_messages, read_chart, read_chart_preview, read_charts, read_chart_section, read_example, read_examples, read_feedback, read_feedbacks, read_role_access_policies, read_run, read_runs, read_tracing_dashboard, register_mcp_server_oauth, remove_annotation_queue_reviewer, rename_filter_view, resolve_annotation_queue_run, stream_feedback_delta, submit_nps_response, sync_examples, test_alert_rule, test_fleet_webhook, test_prompt_webhook, trigger_forge_configuration, update_annotation_queue_run, update_alert_rule, update_chart_section, update_dataset_version, update_experiment_view_override, update_insights_job, update_insights_job_config, update_org_chart_section, update_playground_settings, update_prompt_canvas_quick_action, update_sandbox_proxy_profile, delete_annotation_queue_run, delete_annotation_queue_runs, delete_sandbox_proxy_profile, update_annotation_queue, delete_annotation_queue, delete_annotation_queues, delete_onboarding_state, update_onboarding_state, update_org_chart, create_org_chart, create_org_chart_section, delete_org_chart_note, create_org_chart_note, create_self_hosted_customer, update_self_hosted_customer, update_self_hosted_license, create_hub_environment, update_hub_environment, delete_hub_environment, create_custom_chart_section, update_tracing_dashboard_filters, create_tracing_dashboard_filter, evaluate_grid_panel, create_feedback_formula, update_feedback_formula, delete_feedback_formula, invalidate_mcp_tools_cache, create_mcp_vendor_settings, update_mcp_vendor_settings, delete_mcp_vendor_settings, create_gateway_policy, update_gateway_policy, delete_gateway_policy (등등)
참고: 위에 나열된 작업은 0.15.0-rc.1에서 도입된 작업의 일부입니다. 전체 목록과 이후 릴리스의 작업은 원문 문서를 참고하세요.
FAQ
누가 감사 로그를 볼 수 있나요?
Organization Admin 또는 Organization Operator 역할(organization:manage 권한을 부여하는)이 있는 사용자가 감사 로그에 접근할 수 있습니다. 워크스페이스 수준 역할은 감사 로그 접근을 제공하지 않습니다.
감사 로그는 Plus 또는 Developer 요금제에서 제공되나요?
아니요. 감사 로그는 Enterprise 기능입니다. 요금제 세부 정보는 pricing을 참고하세요.
감사 로그를 보는 UI가 있나요?
네. UI에서 감사 로그 보기를 참고하세요. 감사 로그는 API로도 제공됩니다.
읽기 작업도 기록되나요?
감사 로그는 현재 주로 쓰기 작업에 초점을 둡니다. 읽기 작업 지원이 향후 추가될 수 있습니다.
앞으로 더 많은 작업이 추적되나요?
네. 시간이 지나면서 추적되는 작업 세트를 확장하려 합니다. 추적 작업 레퍼런스는 항상 현재 지원되는 작업 세트를 반영합니다.
OCSF 형식이 아닌 감사 로그를 받을 수 있나요?
API는 이벤트를 OCSF 형식으로만 반환합니다. 다른 형태의 데이터가 필요하면 각 이벤트 내 unmapped.original_audit_log 필드에 원시 LangSmith 감사 로그 기록이 포함됩니다.
OCSF가 무엇인가요?
Open Cybersecurity Schema Framework (OCSF)는 보안 이벤트 데이터를 위한 개방형 표준입니다. LangSmith는 감사 로그 이벤트를 OCSF v1.7.0 API Activity(Class 6003) 객체로 반환합니다.
더 알아보기
- 역할과 권한에 대한 자세한 내용은 RBAC 문서를 참고하세요.
- 감사 로그 API 레퍼런스는 Get audit logs 문서를 확인해 보세요.