Class: SDM::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/models/porcelain.rb

Overview

A Query is a record of a single client request to a resource, such as a SQL query. Longer-running queries including long-running SSH commands and SSH, RDP, or Kubernetes interactive sessions will return two Query records with the same identifier, one record at the start of the query and a second record upon the completion of the query with additional detail.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(account_email: nil, account_first_name: nil, account_id: nil, account_last_name: nil, account_tags: nil, capture: nil, client_ip: nil, completed_at: nil, duration: nil, egress_node_id: nil, encrypted: nil, id: nil, query_body: nil, query_category: nil, query_hash: nil, query_key: nil, record_count: nil, remote_identity_username: nil, replayable: nil, resource_id: nil, resource_name: nil, resource_tags: nil, resource_type: nil, source_ip: nil, timestamp: nil) ⇒ Query

Returns a new instance of Query.



8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112
8113
8114
8115
8116
8117
8118
8119
8120
8121
8122
8123
8124
8125
8126
8127
8128
8129
8130
8131
8132
8133
# File 'lib/models/porcelain.rb', line 8081

def initialize(
  account_email: nil,
  account_first_name: nil,
  account_id: nil,
  account_last_name: nil,
  account_tags: nil,
  capture: nil,
  client_ip: nil,
  completed_at: nil,
  duration: nil,
  egress_node_id: nil,
  encrypted: nil,
  id: nil,
  query_body: nil,
  query_category: nil,
  query_hash: nil,
  query_key: nil,
  record_count: nil,
  remote_identity_username: nil,
  replayable: nil,
  resource_id: nil,
  resource_name: nil,
  resource_tags: nil,
  resource_type: nil,
  source_ip: nil,
  timestamp: nil
)
  @account_email =  == nil ? "" : 
  @account_first_name =  == nil ? "" : 
  @account_id =  == nil ? "" : 
  @account_last_name =  == nil ? "" : 
  @account_tags =  == nil ? SDM::_porcelain_zero_value_tags() : 
  @capture = capture == nil ? nil : capture
  @client_ip = client_ip == nil ? "" : client_ip
  @completed_at = completed_at == nil ? nil : completed_at
  @duration = duration == nil ? nil : duration
  @egress_node_id = egress_node_id == nil ? "" : egress_node_id
  @encrypted = encrypted == nil ? false : encrypted
  @id = id == nil ? "" : id
  @query_body = query_body == nil ? "" : query_body
  @query_category = query_category == nil ? "" : query_category
  @query_hash = query_hash == nil ? "" : query_hash
  @query_key = query_key == nil ? "" : query_key
  @record_count = record_count == nil ? 0 : record_count
  @remote_identity_username = remote_identity_username == nil ? "" : remote_identity_username
  @replayable = replayable == nil ? false : replayable
  @resource_id = resource_id == nil ? "" : resource_id
  @resource_name = resource_name == nil ? "" : resource_name
  @resource_tags = resource_tags == nil ? SDM::_porcelain_zero_value_tags() : resource_tags
  @resource_type = resource_type == nil ? "" : resource_type
  @source_ip = source_ip == nil ? "" : source_ip
  @timestamp = timestamp == nil ? nil : timestamp
end

Instance Attribute Details

#account_emailObject

The email of the account performing this query, at the time the query was executed. If the account email is later changed, that change will not be reflected via this field.



8020
8021
8022
# File 'lib/models/porcelain.rb', line 8020

def 
  @account_email
end

#account_first_nameObject

The given name of the account performing this query, at the time the query was executed. If the account is later renamed, that change will not be reflected via this field.



8023
8024
8025
# File 'lib/models/porcelain.rb', line 8023

def 
  @account_first_name
end

#account_idObject

Unique identifier of the Account that performed the Query.



8025
8026
8027
# File 'lib/models/porcelain.rb', line 8025

def 
  @account_id
end

#account_last_nameObject

The family name of the account performing this query, at the time the query was executed. If the account is later renamed, that change will not be reflected via this field.



8028
8029
8030
# File 'lib/models/porcelain.rb', line 8028

def 
  @account_last_name
end

#account_tagsObject

The tags of the account accessed, at the time the query was executed. If the account tags are later changed, that change will not be reflected via this field.



8031
8032
8033
# File 'lib/models/porcelain.rb', line 8031

def 
  @account_tags
end

#captureObject

For queries against SSH, Kubernetes, and RDP resources, this contains additional information about the captured query.



8034
8035
8036
# File 'lib/models/porcelain.rb', line 8034

def capture
  @capture
end

#client_ipObject

The IP address the Query was performed from, as detected at the StrongDM control plane.



8036
8037
8038
# File 'lib/models/porcelain.rb', line 8036

def client_ip
  @client_ip
end

#completed_atObject

The time at which the Query was completed. Empty if this record indicates the start of a long-running query.



8039
8040
8041
# File 'lib/models/porcelain.rb', line 8039

def completed_at
  @completed_at
end

#durationObject

The duration of the Query.



8041
8042
8043
# File 'lib/models/porcelain.rb', line 8041

def duration
  @duration
end

#egress_node_idObject

The unique ID of the node through which the Resource was accessed.



8043
8044
8045
# File 'lib/models/porcelain.rb', line 8043

def egress_node_id
  @egress_node_id
end

#encryptedObject

Indicates that the body of the Query is encrypted.



8045
8046
8047
# File 'lib/models/porcelain.rb', line 8045

def encrypted
  @encrypted
end

#idObject

Unique identifier of the Query.



8047
8048
8049
# File 'lib/models/porcelain.rb', line 8047

def id
  @id
end

#query_bodyObject

The captured content of the Query. For queries against SSH, Kubernetes, and RDP resources, this contains a JSON representation of the QueryCapture.



8050
8051
8052
# File 'lib/models/porcelain.rb', line 8050

def query_body
  @query_body
end

#query_categoryObject

The general category of Resource against which Query was performed, e.g. "web" or "cloud".



8052
8053
8054
# File 'lib/models/porcelain.rb', line 8052

def query_category
  @query_category
end

#query_hashObject

The hash of the body of the Query.



8054
8055
8056
# File 'lib/models/porcelain.rb', line 8054

def query_hash
  @query_hash
end

#query_keyObject

The symmetric key used to encrypt the body of this Query and its replay if replayable. If the Query is encrypted, this field contains an encrypted symmetric key in base64 encoding. This key must be decrypted with the organization's private key to obtain the symmetric key needed to decrypt the body. If the Query is not encrypted, this field is empty.



8059
8060
8061
# File 'lib/models/porcelain.rb', line 8059

def query_key
  @query_key
end

#record_countObject

The number of records returned by the Query, for a database Resource.



8061
8062
8063
# File 'lib/models/porcelain.rb', line 8061

def record_count
  @record_count
end

#remote_identity_usernameObject

The username of the RemoteIdentity used to access the Resource.



8063
8064
8065
# File 'lib/models/porcelain.rb', line 8063

def remote_identity_username
  @remote_identity_username
end

#replayableObject

Indicates that the Query is replayable, e.g. for some SSH or K8s sessions.



8065
8066
8067
# File 'lib/models/porcelain.rb', line 8065

def replayable
  @replayable
end

#resource_idObject

Unique identifier of the Resource against which the Query was performed.



8067
8068
8069
# File 'lib/models/porcelain.rb', line 8067

def resource_id
  @resource_id
end

#resource_nameObject

The name of the resource accessed, at the time the query was executed. If the resource is later renamed, that change will not be reflected via this field.



8070
8071
8072
# File 'lib/models/porcelain.rb', line 8070

def resource_name
  @resource_name
end

#resource_tagsObject

The tags of the resource accessed, at the time the query was executed. If the resource tags are later changed, that change will not be reflected via this field.



8073
8074
8075
# File 'lib/models/porcelain.rb', line 8073

def resource_tags
  @resource_tags
end

#resource_typeObject

The specific type of Resource against which the Query was performed, e.g. "ssh" or "postgres".



8075
8076
8077
# File 'lib/models/porcelain.rb', line 8075

def resource_type
  @resource_type
end

#source_ipObject

The IP address the Query was performed from, as detected at the ingress gateway.



8077
8078
8079
# File 'lib/models/porcelain.rb', line 8077

def source_ip
  @source_ip
end

#timestampObject

The time at which the Query was started.



8079
8080
8081
# File 'lib/models/porcelain.rb', line 8079

def timestamp
  @timestamp
end

Instance Method Details

#to_json(options = {}) ⇒ Object



8135
8136
8137
8138
8139
8140
8141
# File 'lib/models/porcelain.rb', line 8135

def to_json(options = {})
  hash = {}
  self.instance_variables.each do |var|
    hash[var.id2name.delete_prefix("@")] = self.instance_variable_get var
  end
  hash.to_json
end