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.



14480
14481
14482
14483
14484
14485
14486
14487
14488
14489
14490
14491
14492
14493
14494
14495
14496
14497
14498
14499
14500
14501
14502
14503
14504
14505
14506
14507
14508
14509
14510
14511
14512
14513
14514
14515
14516
14517
14518
14519
14520
14521
14522
14523
14524
14525
14526
14527
14528
14529
14530
14531
14532
14533
14534
14535
14536
14537
14538
14539
14540
# File 'lib/models/porcelain.rb', line 14480

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.



14411
14412
14413
# File 'lib/models/porcelain.rb', line 14411

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.



14414
14415
14416
# File 'lib/models/porcelain.rb', line 14414

def 
  @account_first_name
end

#account_idObject

Unique identifier of the Account that performed the Query.



14416
14417
14418
# File 'lib/models/porcelain.rb', line 14416

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.



14419
14420
14421
# File 'lib/models/porcelain.rb', line 14419

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.



14422
14423
14424
# File 'lib/models/porcelain.rb', line 14422

def 
  @account_tags
end

#authzjsonObject

Authorization metadata associated with this query.



14424
14425
14426
# File 'lib/models/porcelain.rb', line 14424

def authzjson
  @authzjson
end

#captureObject

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



14427
14428
14429
# File 'lib/models/porcelain.rb', line 14427

def capture
  @capture
end

#client_ipObject

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



14429
14430
14431
# File 'lib/models/porcelain.rb', line 14429

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.



14432
14433
14434
# File 'lib/models/porcelain.rb', line 14432

def completed_at
  @completed_at
end

#durationObject

The duration of the Query.



14434
14435
14436
# File 'lib/models/porcelain.rb', line 14434

def duration
  @duration
end

#egress_node_idObject

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



14436
14437
14438
# File 'lib/models/porcelain.rb', line 14436

def egress_node_id
  @egress_node_id
end

#encryptedObject

Indicates that the body of the Query is encrypted.



14438
14439
14440
# File 'lib/models/porcelain.rb', line 14438

def encrypted
  @encrypted
end

#idObject

Unique identifier of the Query.



14440
14441
14442
# File 'lib/models/porcelain.rb', line 14440

def id
  @id
end

#identity_alias_usernameObject

The username of the IdentityAlias used to access the Resource.



14442
14443
14444
# File 'lib/models/porcelain.rb', line 14442

def identity_alias_username
  @identity_alias_username
end

#metadata_jsonObject

Driver specific metadata associated with this query.



14444
14445
14446
# File 'lib/models/porcelain.rb', line 14444

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.



14447
14448
14449
# File 'lib/models/porcelain.rb', line 14447

def query_body
  @query_body
end

#query_categoryObject

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



14449
14450
14451
# File 'lib/models/porcelain.rb', line 14449

def query_category
  @query_category
end

#query_hashObject

The hash of the body of the Query.



14451
14452
14453
# File 'lib/models/porcelain.rb', line 14451

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.



14456
14457
14458
# File 'lib/models/porcelain.rb', line 14456

def query_key
  @query_key
end

#record_countObject

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



14458
14459
14460
# File 'lib/models/porcelain.rb', line 14458

def record_count
  @record_count
end

#remote_identity_usernameObject

The username of the RemoteIdentity used to access the Resource.



14460
14461
14462
# File 'lib/models/porcelain.rb', line 14460

def remote_identity_username
  @remote_identity_username
end

#replayableObject

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



14462
14463
14464
# File 'lib/models/porcelain.rb', line 14462

def replayable
  @replayable
end

#resource_idObject

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



14464
14465
14466
# File 'lib/models/porcelain.rb', line 14464

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.



14467
14468
14469
# File 'lib/models/porcelain.rb', line 14467

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.



14470
14471
14472
# File 'lib/models/porcelain.rb', line 14470

def resource_tags
  @resource_tags
end

#resource_typeObject

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



14472
14473
14474
# File 'lib/models/porcelain.rb', line 14472

def resource_type
  @resource_type
end

#source_ipObject

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



14474
14475
14476
# File 'lib/models/porcelain.rb', line 14474

def source_ip
  @source_ip
end

#targetObject

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



14476
14477
14478
# File 'lib/models/porcelain.rb', line 14476

def target
  @target
end

#timestampObject

The time at which the Query was started.



14478
14479
14480
# File 'lib/models/porcelain.rb', line 14478

def timestamp
  @timestamp
end

Instance Method Details

#to_json(options = {}) ⇒ Object



14542
14543
14544
14545
14546
14547
14548
# File 'lib/models/porcelain.rb', line 14542

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