InfoGrab DocsInfoGrab Docs

데이터베이스 접근 감사 이벤트 참조

요약

이 페이지는 Teleport로 보호되는 데이터베이스의 세션과 관련된 감사 이벤트를 나열합니다. 감사 로그(audit log)에서 데이터베이스 세션 활동을 확인할 수 있습니다. 데이터베이스 세션 ID는 UUID 형식입니다(예: 307b49d6-56c7-4d20-8cf0-5bc5348a7101).

이 페이지는 Teleport로 보호되는 데이터베이스의 세션과 관련된 감사 이벤트를 나열합니다.

감사 로그(audit log)에서 데이터베이스 세션 활동을 확인할 수 있습니다. 세션이 업로드된 후에는 tsh play 명령으로 감사 데이터를 재생할 수 있습니다.

데이터베이스 세션 ID는 UUID 형식입니다(예: 307b49d6-56c7-4d20-8cf0-5bc5348a7101). sid 키를 가진 데이터베이스 세션 ID를 얻으려면 감사 로그를 참조하세요.

PostgreSQL 데이터베이스 레코딩은 대화형 형식으로 제공됩니다:

$ 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

모든 데이터베이스 프로토콜 레코딩은 JSON 형식(--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"
}

감사 로그는 event 리소스에 대한 권한이 있는 사용자의 경우 Web UI에서 왼쪽 창의 Audit 아래에서 확인할 수 있습니다. 데이터베이스 세션은 세션 레코딩 페이지에 나열되지만, PostgreSQL 세션만 재생할 수 있습니다.

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 사용자 이름.
}

데이터베이스 접근 감사 이벤트 참조

Teleport v18.9
원문 보기
요약

이 페이지는 Teleport로 보호되는 데이터베이스의 세션과 관련된 감사 이벤트를 나열합니다. 감사 로그(audit log)에서 데이터베이스 세션 활동을 확인할 수 있습니다. 데이터베이스 세션 ID는 UUID 형식입니다(예: 307b49d6-56c7-4d20-8cf0-5bc5348a7101).

이 페이지는 Teleport로 보호되는 데이터베이스의 세션과 관련된 감사 이벤트를 나열합니다.

감사 로그(audit log)에서 데이터베이스 세션 활동을 확인할 수 있습니다. 세션이 업로드된 후에는 tsh play 명령으로 감사 데이터를 재생할 수 있습니다.

데이터베이스 세션 ID는 UUID 형식입니다(예: 307b49d6-56c7-4d20-8cf0-5bc5348a7101). sid 키를 가진 데이터베이스 세션 ID를 얻으려면 감사 로그를 참조하세요.

PostgreSQL 데이터베이스 레코딩은 대화형 형식으로 제공됩니다:

$ 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

모든 데이터베이스 프로토콜 레코딩은 JSON 형식(--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"
}

감사 로그는 event 리소스에 대한 권한이 있는 사용자의 경우 Web UI에서 왼쪽 창의 Audit 아래에서 확인할 수 있습니다. 데이터베이스 세션은 세션 레코딩 페이지에 나열되지만, PostgreSQL 세션만 재생할 수 있습니다.

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 사용자 이름.
}