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.



14352
14353
14354
14355
14356
14357
14358
14359
14360
14361
14362
14363
14364
14365
14366
14367
14368
14369
14370
14371
14372
14373
14374
14375
14376
14377
14378
14379
14380
14381
14382
14383
14384
14385
14386
14387
14388
14389
14390
14391
14392
14393
14394
14395
14396
14397
14398
14399
14400
14401
14402
14403
14404
14405
14406
14407
14408
14409
14410
14411
14412
# File 'lib/models/porcelain.rb', line 14352

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.



14283
14284
14285
# File 'lib/models/porcelain.rb', line 14283

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.



14286
14287
14288
# File 'lib/models/porcelain.rb', line 14286

def 
  @account_first_name
end

#account_idObject

Unique identifier of the Account that performed the Query.



14288
14289
14290
# File 'lib/models/porcelain.rb', line 14288

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.



14291
14292
14293
# File 'lib/models/porcelain.rb', line 14291

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.



14294
14295
14296
# File 'lib/models/porcelain.rb', line 14294

def 
  @account_tags
end

#authzjsonObject

Authorization metadata associated with this query.



14296
14297
14298
# File 'lib/models/porcelain.rb', line 14296

def authzjson
  @authzjson
end

#captureObject

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



14299
14300
14301
# File 'lib/models/porcelain.rb', line 14299

def capture
  @capture
end

#client_ipObject

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



14301
14302
14303
# File 'lib/models/porcelain.rb', line 14301

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.



14304
14305
14306
# File 'lib/models/porcelain.rb', line 14304

def completed_at
  @completed_at
end

#durationObject

The duration of the Query.



14306
14307
14308
# File 'lib/models/porcelain.rb', line 14306

def duration
  @duration
end

#egress_node_idObject

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



14308
14309
14310
# File 'lib/models/porcelain.rb', line 14308

def egress_node_id
  @egress_node_id
end

#encryptedObject

Indicates that the body of the Query is encrypted.



14310
14311
14312
# File 'lib/models/porcelain.rb', line 14310

def encrypted
  @encrypted
end

#idObject

Unique identifier of the Query.



14312
14313
14314
# File 'lib/models/porcelain.rb', line 14312

def id
  @id
end

#identity_alias_usernameObject

The username of the IdentityAlias used to access the Resource.



14314
14315
14316
# File 'lib/models/porcelain.rb', line 14314

def identity_alias_username
  @identity_alias_username
end

#metadata_jsonObject

Driver specific metadata associated with this query.



14316
14317
14318
# File 'lib/models/porcelain.rb', line 14316

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.



14319
14320
14321
# File 'lib/models/porcelain.rb', line 14319

def query_body
  @query_body
end

#query_categoryObject

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



14321
14322
14323
# File 'lib/models/porcelain.rb', line 14321

def query_category
  @query_category
end

#query_hashObject

The hash of the body of the Query.



14323
14324
14325
# File 'lib/models/porcelain.rb', line 14323

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.



14328
14329
14330
# File 'lib/models/porcelain.rb', line 14328

def query_key
  @query_key
end

#record_countObject

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



14330
14331
14332
# File 'lib/models/porcelain.rb', line 14330

def record_count
  @record_count
end

#remote_identity_usernameObject

The username of the RemoteIdentity used to access the Resource.



14332
14333
14334
# File 'lib/models/porcelain.rb', line 14332

def remote_identity_username
  @remote_identity_username
end

#replayableObject

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



14334
14335
14336
# File 'lib/models/porcelain.rb', line 14334

def replayable
  @replayable
end

#resource_idObject

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



14336
14337
14338
# File 'lib/models/porcelain.rb', line 14336

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.



14339
14340
14341
# File 'lib/models/porcelain.rb', line 14339

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.



14342
14343
14344
# File 'lib/models/porcelain.rb', line 14342

def resource_tags
  @resource_tags
end

#resource_typeObject

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



14344
14345
14346
# File 'lib/models/porcelain.rb', line 14344

def resource_type
  @resource_type
end

#source_ipObject

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



14346
14347
14348
# File 'lib/models/porcelain.rb', line 14346

def source_ip
  @source_ip
end

#targetObject

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



14348
14349
14350
# File 'lib/models/porcelain.rb', line 14348

def target
  @target
end

#timestampObject

The time at which the Query was started.



14350
14351
14352
# File 'lib/models/porcelain.rb', line 14350

def timestamp
  @timestamp
end

Instance Method Details

#to_json(options = {}) ⇒ Object



14414
14415
14416
14417
14418
14419
14420
# File 'lib/models/porcelain.rb', line 14414

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