데이터베이스 접근 감사 이벤트 참조
You can view database session activity in the audit log. Database session ID will be in a UUID format (ex: 307b49d6-56c7-4d20-8cf0-5bc5348a7101) See the audit log to get a database session ID with a key o...
You can view database session activity in the audit log.
After a session is uploaded, you can play back the audit data
with the tsh play command.
Database session ID will be in a UUID format (ex: 307b49d6-56c7-4d20-8cf0-5bc5348a7101)
See the audit log to get a database session ID with a key of sid.
PostgreSQL database recordings are available in interactive format:
$ tsh play 307b49d6-56c7-4d20-8cf0-5bc5348a7101
Session started to database "postgres-database" at Mon Jul 20 20:00 UTC
postgres=> SELECT * FROM products;
SUCCESS
(10 rows affected)
postgres=> INSERT INTO products (name, price) VALUES ('Phone', 150.00);
ERROR: permission denied for table products (SQLSTATE 42501)
Session ended at Mon Jul 20 20:30 UTC
All database protocols recordings are supported in JSON format (--format json):
$ tsh play --format json 307b49d6-56c7-4d20-8cf0-5bc5348a7101
{
"cluster_name": "teleport.example.com",
"code": "TDB02I",
"db_name": "example",
"db_origin": "dynamic",
"db_protocol": "postgres",
"db_query": "select * from sample;",
"db_roles": [
"access"
],
"db_service": "example",
"db_type": "rds",
"db_uri": "databases-1.us-east-1.rds.amazonaws.com:5432",
"db_user": "alice",
"ei": 2,
"event": "db.session.query",
"sid": "307b49d6-56c7-4d20-8cf0-5bc5348a7101",
"success": true,
"time": "2023-10-06T10:58:32.88Z",
"uid": "a649d925-9dac-44cc-bd04-4387c295580f",
"user": "alice"
}
The audit log is viewable under Audit in the left-hand pane via the Web UI
for users with permission to the event resources. Database sessions are listed
on the session recordings page, but only PostgreSQL sessions are playable.
db.session.start (TDB00I/W)#
클라이언트가 데이터베이스에 성공적으로 연결하거나 접근 거부로 인해 연결 시도가 실패할 때 발생합니다.
성공적인 연결 이벤트:
{
"cluster_name": "root", // Teleport 클러스터 이름.
"code": "TDB00I", // 이벤트 코드.
"db_name": "test", // 데이터베이스/스키마 이름.
"db_protocol": "postgres", // 데이터베이스 프로토콜.
"db_service": "local", // 데이터베이스 서비스 이름.
"db_uri": "localhost:5432", // 데이터베이스 서버 엔드포인트.
"db_user": "postgres", // 데이터베이스 계정 이름.
"ei": 0, // 세션 내 이벤트 인덱스.
"event": "db.session.start", // 이벤트 이름.
"namespace": "default", // 이벤트 네임스페이스, 항상 "default".
"server_id": "05ff66c9-a948-42f4-af0e-a1b6ba62561e", // Database Service 호스트 ID.
"sid": "63b6fa11-cd44-477b-911a-602b75ab13b5", // 고유한 데이터베이스 세션 ID.
"success": true, // 성공적인 연결을 나타냅니다.
"time": "2021-04-27T23:00:26.014Z", // 이벤트 타임스탬프.
"uid": "eac5b6c8-384a-4471-9559-e135834b1ab0", // 고유한 이벤트 ID.
"user": "alice" // Teleport 사용자 이름.
}
접근 거부 이벤트:
{
"cluster_name": "root", // Teleport 클러스터 이름.
"code": "TDB00W", // 이벤트 코드.
"db_name": "test", // 사용자가 연결하려 한 데이터베이스/스키마 이름.
"db_protocol": "postgres", // 데이터베이스 프로토콜.
"db_service": "local", // 데이터베이스 서비스 이름.
"db_uri": "localhost:5432", // 데이터베이스 서버 엔드포인트.
"db_user": "superuser", // 사용자가 로그인하려 한 데이터베이스 계정 이름.
"ei": 0, // 세션 내 이벤트 인덱스.
"error": "access to database denied", // 연결 오류.
"event": "db.session.start", // 이벤트 이름.
"message": "access to database denied", // 상세 오류 메시지.
"namespace": "default", // 이벤트 네임스페이스, 항상 "default".
"server_id": "05ff66c9-a948-42f4-af0e-a1b6ba62561e", // Database Service 호스트 ID.
"sid": "d18388e5-cc7c-4624-b22b-d36db60d0c50", // 고유한 데이터베이스 세션 ID.
"success": false, // 실패한 연결을 나타냅니다.
"time": "2021-04-27T23:03:05.226Z", // 이벤트 타임스탬프.
"uid": "507fe008-99a4-4247-8603-6ba03408d047", // 고유한 이벤트 ID.
"user": "alice" // Teleport 사용자 이름.
}
db.session.end (TDB01I)#
클라이언트가 데이터베이스에서 연결을 끊을 때 발생합니다.
{
"cluster_name": "root", // Teleport 클러스터 이름.
"code": "TDB01I", // 이벤트 코드.
"db_name": "test", // 데이터베이스/스키마 이름.
"db_protocol": "postgres", // 데이터베이스 프로토콜.
"db_service": "local", // 데이터베이스 서비스 이름.
"db_uri": "localhost:5432", // 데이터베이스 서버 엔드포인트.
"db_user": "postgres", // 데이터베이스 계정 이름.
"ei": 3, // 세션 내 이벤트 인덱스.
"event": "db.session.end", // 이벤트 이름.
"sid": "63b6fa11-cd44-477b-911a-602b75ab13b5", // 고유한 데이터베이스 세션 ID.
"time": "2021-04-27T23:00:30.046Z", // 이벤트 타임스탬프.
"uid": "a626b22d-bbd0-40ef-9896-b7ff365664b0", // 고유한 이벤트 ID.
"user": "alice" // Teleport 사용자 이름.
}
db.session.query (TDB02I)#
클라이언트가 SQL 쿼리를 실행할 때 발생합니다.
{
"cluster_name": "root", // Teleport 클러스터 이름.
"code": "TDB02I", // 이벤트 코드.
"db_name": "test", // 데이터베이스/스키마 이름.
"db_protocol": "postgres", // 데이터베이스 프로토콜.
"db_query": "INSERT INTO public.test (id,\"timestamp\",json)\n\tVALUES ($1,$2,$3)", // 쿼리 텍스트.
"db_query_parameters": [ // 쿼리 매개변수(준비된 구문에 대한).
"test-id",
"2022-04-02 17:50:20-07",
"{\"k\": \"v\"}"
],
"db_service": "local", // 데이터베이스 서비스 이름.
"db_uri": "localhost:5432", // 데이터베이스 서버 엔드포인트.
"db_user": "postgres", // 데이터베이스 계정 이름.
"ei": 29, // 세션 내 이벤트 인덱스.
"event": "db.session.query", // 이벤트 이름.
"sid": "691e6f70-3c31-4412-90aa-fe0558abb212", // 고유한 데이터베이스 세션 ID.
"time": "2021-04-27T23:04:57.395Z", // 이벤트 타임스탬프.
"uid": "9f7b4179-b9cf-4302-bb7c-1408e404823f", // 고유한 이벤트 ID.
"user": "alice" // Teleport 사용자 이름.
}
db.session.spanner.rpc (TSPN001I/W)#
클라이언트가 원격 프로시저 호출(RPC)을 실행하거나 접근 거부로 인해 RPC 실행 시도가 실패할 때 발생합니다.
{
"args": { // RPC 인수(아래 "procedure"에 특정).
"query_options": {},
"request_options": {},
"seqno": 1,
"session": "projects/project-id/instances/instance-id/databases/dev-db/sessions/ABCDEF1234567890",
"sql": "select * from TestTable",
"transaction": {
"Selector": {
"SingleUse": {
"Mode": {
"ReadOnly": {
"TimestampBound": {
"Strong": true
},
"return_read_timestamp": true
}
}
}
}
}
},
"cluster_name": "root", // Teleport 클러스터 이름.
"code": "TSPN001I", // 이벤트 코드.
"db_name": "dev-db", // 데이터베이스 이름.
"db_origin": "dynamic", // Teleport 데이터베이스 서비스 구성 출처.
"db_protocol": "spanner", // 데이터베이스 프로토콜.
"db_service": "teleport-spanner", // 데이터베이스 서비스 이름.
"db_type": "spanner", // 데이터베이스 유형.
"db_uri": "spanner.googleapis.com:443", // 데이터베이스 서비스 엔드포인트.
"db_user": "some-user", // 데이터베이스 계정 이름(GCP IAM 서비스 계정 이름에서 @<project>.iam.gserviceaccount.com 접미사 제외).
"ei": 29, // 세션 내 이벤트 인덱스.
"event": "db.session.spanner.rpc", // 이벤트 이름.
"procedure": "ExecuteStreamingSql", // 원격 프로시저 호출(RPC) 이름.
"sid": "406b9883-0e16-42f2-9d0b-b3bd956f9cd4", // 고유한 데이터베이스 세션 ID.
"success": true, // Teleport RBAC에 의해 RPC가 허용되었습니다.
"time": "2024-03-13T00:02:44.739Z", // 이벤트 타임스탬프.
"uid": "e0625e79-9399-4ea3-aa8b-dba1eb98658d", // 고유한 이벤트 ID.
"user": "alice@example.com" // Teleport 사용자 이름.
}
