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, 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.



9124
9125
9126
9127
9128
9129
9130
9131
9132
9133
9134
9135
9136
9137
9138
9139
9140
9141
9142
9143
9144
9145
9146
9147
9148
9149
9150
9151
9152
9153
9154
9155
9156
9157
9158
9159
9160
9161
9162
9163
9164
9165
9166
9167
9168
9169
9170
9171
9172
9173
9174
9175
9176
9177
9178
9179
9180
9181
9182
# File 'lib/models/porcelain.rb', line 9124

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,
  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
  @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.



9057
9058
9059
# File 'lib/models/porcelain.rb', line 9057

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.



9060
9061
9062
# File 'lib/models/porcelain.rb', line 9060

def 
  @account_first_name
end

#account_idObject

Unique identifier of the Account that performed the Query.



9062
9063
9064
# File 'lib/models/porcelain.rb', line 9062

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.



9065
9066
9067
# File 'lib/models/porcelain.rb', line 9065

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.



9068
9069
9070
# File 'lib/models/porcelain.rb', line 9068

def 
  @account_tags
end

#authzjsonObject

Authorization metadata associated with this query.



9070
9071
9072
# File 'lib/models/porcelain.rb', line 9070

def authzjson
  @authzjson
end

#captureObject

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



9073
9074
9075
# File 'lib/models/porcelain.rb', line 9073

def capture
  @capture
end

#client_ipObject

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



9075
9076
9077
# File 'lib/models/porcelain.rb', line 9075

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.



9078
9079
9080
# File 'lib/models/porcelain.rb', line 9078

def completed_at
  @completed_at
end

#durationObject

The duration of the Query.



9080
9081
9082
# File 'lib/models/porcelain.rb', line 9080

def duration
  @duration
end

#egress_node_idObject

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



9082
9083
9084
# File 'lib/models/porcelain.rb', line 9082

def egress_node_id
  @egress_node_id
end

#encryptedObject

Indicates that the body of the Query is encrypted.



9084
9085
9086
# File 'lib/models/porcelain.rb', line 9084

def encrypted
  @encrypted
end

#idObject

Unique identifier of the Query.



9086
9087
9088
# File 'lib/models/porcelain.rb', line 9086

def id
  @id
end

#identity_alias_usernameObject

The username of the IdentityAlias used to access the Resource.



9088
9089
9090
# File 'lib/models/porcelain.rb', line 9088

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



9091
9092
9093
# File 'lib/models/porcelain.rb', line 9091

def query_body
  @query_body
end

#query_categoryObject

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



9093
9094
9095
# File 'lib/models/porcelain.rb', line 9093

def query_category
  @query_category
end

#query_hashObject

The hash of the body of the Query.



9095
9096
9097
# File 'lib/models/porcelain.rb', line 9095

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.



9100
9101
9102
# File 'lib/models/porcelain.rb', line 9100

def query_key
  @query_key
end

#record_countObject

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



9102
9103
9104
# File 'lib/models/porcelain.rb', line 9102

def record_count
  @record_count
end

#remote_identity_usernameObject

The username of the RemoteIdentity used to access the Resource.



9104
9105
9106
# File 'lib/models/porcelain.rb', line 9104

def remote_identity_username
  @remote_identity_username
end

#replayableObject

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



9106
9107
9108
# File 'lib/models/porcelain.rb', line 9106

def replayable
  @replayable
end

#resource_idObject

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



9108
9109
9110
# File 'lib/models/porcelain.rb', line 9108

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.



9111
9112
9113
# File 'lib/models/porcelain.rb', line 9111

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.



9114
9115
9116
# File 'lib/models/porcelain.rb', line 9114

def resource_tags
  @resource_tags
end

#resource_typeObject

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



9116
9117
9118
# File 'lib/models/porcelain.rb', line 9116

def resource_type
  @resource_type
end

#source_ipObject

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



9118
9119
9120
# File 'lib/models/porcelain.rb', line 9118

def source_ip
  @source_ip
end

#targetObject

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



9120
9121
9122
# File 'lib/models/porcelain.rb', line 9120

def target
  @target
end

#timestampObject

The time at which the Query was started.



9122
9123
9124
# File 'lib/models/porcelain.rb', line 9122

def timestamp
  @timestamp
end

Instance Method Details

#to_json(options = {}) ⇒ Object



9184
9185
9186
9187
9188
9189
9190
# File 'lib/models/porcelain.rb', line 9184

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