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.



12476
12477
12478
12479
12480
12481
12482
12483
12484
12485
12486
12487
12488
12489
12490
12491
12492
12493
12494
12495
12496
12497
12498
12499
12500
12501
12502
12503
12504
12505
12506
12507
12508
12509
12510
12511
12512
12513
12514
12515
12516
12517
12518
12519
12520
12521
12522
12523
12524
12525
12526
12527
12528
12529
12530
12531
12532
12533
12534
12535
12536
# File 'lib/models/porcelain.rb', line 12476

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



12407
12408
12409
# File 'lib/models/porcelain.rb', line 12407

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.



12410
12411
12412
# File 'lib/models/porcelain.rb', line 12410

def 
  @account_first_name
end

#account_idObject

Unique identifier of the Account that performed the Query.



12412
12413
12414
# File 'lib/models/porcelain.rb', line 12412

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.



12415
12416
12417
# File 'lib/models/porcelain.rb', line 12415

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.



12418
12419
12420
# File 'lib/models/porcelain.rb', line 12418

def 
  @account_tags
end

#authzjsonObject

Authorization metadata associated with this query.



12420
12421
12422
# File 'lib/models/porcelain.rb', line 12420

def authzjson
  @authzjson
end

#captureObject

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



12423
12424
12425
# File 'lib/models/porcelain.rb', line 12423

def capture
  @capture
end

#client_ipObject

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



12425
12426
12427
# File 'lib/models/porcelain.rb', line 12425

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.



12428
12429
12430
# File 'lib/models/porcelain.rb', line 12428

def completed_at
  @completed_at
end

#durationObject

The duration of the Query.



12430
12431
12432
# File 'lib/models/porcelain.rb', line 12430

def duration
  @duration
end

#egress_node_idObject

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



12432
12433
12434
# File 'lib/models/porcelain.rb', line 12432

def egress_node_id
  @egress_node_id
end

#encryptedObject

Indicates that the body of the Query is encrypted.



12434
12435
12436
# File 'lib/models/porcelain.rb', line 12434

def encrypted
  @encrypted
end

#idObject

Unique identifier of the Query.



12436
12437
12438
# File 'lib/models/porcelain.rb', line 12436

def id
  @id
end

#identity_alias_usernameObject

The username of the IdentityAlias used to access the Resource.



12438
12439
12440
# File 'lib/models/porcelain.rb', line 12438

def identity_alias_username
  @identity_alias_username
end

#metadata_jsonObject

Driver specific metadata associated with this query.



12440
12441
12442
# File 'lib/models/porcelain.rb', line 12440

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



12443
12444
12445
# File 'lib/models/porcelain.rb', line 12443

def query_body
  @query_body
end

#query_categoryObject

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



12445
12446
12447
# File 'lib/models/porcelain.rb', line 12445

def query_category
  @query_category
end

#query_hashObject

The hash of the body of the Query.



12447
12448
12449
# File 'lib/models/porcelain.rb', line 12447

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.



12452
12453
12454
# File 'lib/models/porcelain.rb', line 12452

def query_key
  @query_key
end

#record_countObject

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



12454
12455
12456
# File 'lib/models/porcelain.rb', line 12454

def record_count
  @record_count
end

#remote_identity_usernameObject

The username of the RemoteIdentity used to access the Resource.



12456
12457
12458
# File 'lib/models/porcelain.rb', line 12456

def remote_identity_username
  @remote_identity_username
end

#replayableObject

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



12458
12459
12460
# File 'lib/models/porcelain.rb', line 12458

def replayable
  @replayable
end

#resource_idObject

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



12460
12461
12462
# File 'lib/models/porcelain.rb', line 12460

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.



12463
12464
12465
# File 'lib/models/porcelain.rb', line 12463

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.



12466
12467
12468
# File 'lib/models/porcelain.rb', line 12466

def resource_tags
  @resource_tags
end

#resource_typeObject

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



12468
12469
12470
# File 'lib/models/porcelain.rb', line 12468

def resource_type
  @resource_type
end

#source_ipObject

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



12470
12471
12472
# File 'lib/models/porcelain.rb', line 12470

def source_ip
  @source_ip
end

#targetObject

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



12472
12473
12474
# File 'lib/models/porcelain.rb', line 12472

def target
  @target
end

#timestampObject

The time at which the Query was started.



12474
12475
12476
# File 'lib/models/porcelain.rb', line 12474

def timestamp
  @timestamp
end

Instance Method Details

#to_json(options = {}) ⇒ Object



12538
12539
12540
12541
12542
12543
12544
# File 'lib/models/porcelain.rb', line 12538

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