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, authzjson: nil, capture: nil, client_ip: nil, completed_at: nil, duration: nil, egress_node_id: nil, encrypted: nil, id: nil, identity_alias_username: nil, metadata_json: 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, target: nil, timestamp: nil) ⇒ Query

Returns a new instance of Query.



14106
14107
14108
14109
14110
14111
14112
14113
14114
14115
14116
14117
14118
14119
14120
14121
14122
14123
14124
14125
14126
14127
14128
14129
14130
14131
14132
14133
14134
14135
14136
14137
14138
14139
14140
14141
14142
14143
14144
14145
14146
14147
14148
14149
14150
14151
14152
14153
14154
14155
14156
14157
14158
14159
14160
14161
14162
14163
14164
14165
14166
# File 'lib/models/porcelain.rb', line 14106

def initialize(
  account_email: nil,
  account_first_name: nil,
  account_id: nil,
  account_last_name: nil,
  account_tags: nil,
  authzjson: nil,
  capture: nil,
  client_ip: nil,
  completed_at: nil,
  duration: nil,
  egress_node_id: nil,
  encrypted: nil,
  id: nil,
  identity_alias_username: nil,
  metadata_json: 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,
  target: 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() : 
  @authzjson = authzjson == nil ? "" : authzjson
  @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
  @identity_alias_username = identity_alias_username == nil ? "" : identity_alias_username
  @metadata_json =  == nil ? "" : 
  @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
  @target = target == nil ? "" : target
  @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.



14037
14038
14039
# File 'lib/models/porcelain.rb', line 14037

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.



14040
14041
14042
# File 'lib/models/porcelain.rb', line 14040

def 
  @account_first_name
end

#account_idObject

Unique identifier of the Account that performed the Query.



14042
14043
14044
# File 'lib/models/porcelain.rb', line 14042

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.



14045
14046
14047
# File 'lib/models/porcelain.rb', line 14045

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.



14048
14049
14050
# File 'lib/models/porcelain.rb', line 14048

def 
  @account_tags
end

#authzjsonObject

Authorization metadata associated with this query.



14050
14051
14052
# File 'lib/models/porcelain.rb', line 14050

def authzjson
  @authzjson
end

#captureObject

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



14053
14054
14055
# File 'lib/models/porcelain.rb', line 14053

def capture
  @capture
end

#client_ipObject

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



14055
14056
14057
# File 'lib/models/porcelain.rb', line 14055

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.



14058
14059
14060
# File 'lib/models/porcelain.rb', line 14058

def completed_at
  @completed_at
end

#durationObject

The duration of the Query.



14060
14061
14062
# File 'lib/models/porcelain.rb', line 14060

def duration
  @duration
end

#egress_node_idObject

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



14062
14063
14064
# File 'lib/models/porcelain.rb', line 14062

def egress_node_id
  @egress_node_id
end

#encryptedObject

Indicates that the body of the Query is encrypted.



14064
14065
14066
# File 'lib/models/porcelain.rb', line 14064

def encrypted
  @encrypted
end

#idObject

Unique identifier of the Query.



14066
14067
14068
# File 'lib/models/porcelain.rb', line 14066

def id
  @id
end

#identity_alias_usernameObject

The username of the IdentityAlias used to access the Resource.



14068
14069
14070
# File 'lib/models/porcelain.rb', line 14068

def identity_alias_username
  @identity_alias_username
end

#metadata_jsonObject

Driver specific metadata associated with this query.



14070
14071
14072
# File 'lib/models/porcelain.rb', line 14070

def 
  @metadata_json
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.



14073
14074
14075
# File 'lib/models/porcelain.rb', line 14073

def query_body
  @query_body
end

#query_categoryObject

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



14075
14076
14077
# File 'lib/models/porcelain.rb', line 14075

def query_category
  @query_category
end

#query_hashObject

The hash of the body of the Query.



14077
14078
14079
# File 'lib/models/porcelain.rb', line 14077

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.



14082
14083
14084
# File 'lib/models/porcelain.rb', line 14082

def query_key
  @query_key
end

#record_countObject

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



14084
14085
14086
# File 'lib/models/porcelain.rb', line 14084

def record_count
  @record_count
end

#remote_identity_usernameObject

The username of the RemoteIdentity used to access the Resource.



14086
14087
14088
# File 'lib/models/porcelain.rb', line 14086

def remote_identity_username
  @remote_identity_username
end

#replayableObject

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



14088
14089
14090
# File 'lib/models/porcelain.rb', line 14088

def replayable
  @replayable
end

#resource_idObject

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



14090
14091
14092
# File 'lib/models/porcelain.rb', line 14090

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.



14093
14094
14095
# File 'lib/models/porcelain.rb', line 14093

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.



14096
14097
14098
# File 'lib/models/porcelain.rb', line 14096

def resource_tags
  @resource_tags
end

#resource_typeObject

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



14098
14099
14100
# File 'lib/models/porcelain.rb', line 14098

def resource_type
  @resource_type
end

#source_ipObject

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



14100
14101
14102
# File 'lib/models/porcelain.rb', line 14100

def source_ip
  @source_ip
end

#targetObject

The target destination of the query, in host:port format.



14102
14103
14104
# File 'lib/models/porcelain.rb', line 14102

def target
  @target
end

#timestampObject

The time at which the Query was started.



14104
14105
14106
# File 'lib/models/porcelain.rb', line 14104

def timestamp
  @timestamp
end

Instance Method Details

#to_json(options = {}) ⇒ Object



14168
14169
14170
14171
14172
14173
14174
# File 'lib/models/porcelain.rb', line 14168

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