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.



12557
12558
12559
12560
12561
12562
12563
12564
12565
12566
12567
12568
12569
12570
12571
12572
12573
12574
12575
12576
12577
12578
12579
12580
12581
12582
12583
12584
12585
12586
12587
12588
12589
12590
12591
12592
12593
12594
12595
12596
12597
12598
12599
12600
12601
12602
12603
12604
12605
12606
12607
12608
12609
12610
12611
12612
12613
12614
12615
12616
12617
# File 'lib/models/porcelain.rb', line 12557

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.



12488
12489
12490
# File 'lib/models/porcelain.rb', line 12488

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.



12491
12492
12493
# File 'lib/models/porcelain.rb', line 12491

def 
  @account_first_name
end

#account_idObject

Unique identifier of the Account that performed the Query.



12493
12494
12495
# File 'lib/models/porcelain.rb', line 12493

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.



12496
12497
12498
# File 'lib/models/porcelain.rb', line 12496

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.



12499
12500
12501
# File 'lib/models/porcelain.rb', line 12499

def 
  @account_tags
end

#authzjsonObject

Authorization metadata associated with this query.



12501
12502
12503
# File 'lib/models/porcelain.rb', line 12501

def authzjson
  @authzjson
end

#captureObject

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



12504
12505
12506
# File 'lib/models/porcelain.rb', line 12504

def capture
  @capture
end

#client_ipObject

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



12506
12507
12508
# File 'lib/models/porcelain.rb', line 12506

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.



12509
12510
12511
# File 'lib/models/porcelain.rb', line 12509

def completed_at
  @completed_at
end

#durationObject

The duration of the Query.



12511
12512
12513
# File 'lib/models/porcelain.rb', line 12511

def duration
  @duration
end

#egress_node_idObject

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



12513
12514
12515
# File 'lib/models/porcelain.rb', line 12513

def egress_node_id
  @egress_node_id
end

#encryptedObject

Indicates that the body of the Query is encrypted.



12515
12516
12517
# File 'lib/models/porcelain.rb', line 12515

def encrypted
  @encrypted
end

#idObject

Unique identifier of the Query.



12517
12518
12519
# File 'lib/models/porcelain.rb', line 12517

def id
  @id
end

#identity_alias_usernameObject

The username of the IdentityAlias used to access the Resource.



12519
12520
12521
# File 'lib/models/porcelain.rb', line 12519

def identity_alias_username
  @identity_alias_username
end

#metadata_jsonObject

Driver specific metadata associated with this query.



12521
12522
12523
# File 'lib/models/porcelain.rb', line 12521

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.



12524
12525
12526
# File 'lib/models/porcelain.rb', line 12524

def query_body
  @query_body
end

#query_categoryObject

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



12526
12527
12528
# File 'lib/models/porcelain.rb', line 12526

def query_category
  @query_category
end

#query_hashObject

The hash of the body of the Query.



12528
12529
12530
# File 'lib/models/porcelain.rb', line 12528

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.



12533
12534
12535
# File 'lib/models/porcelain.rb', line 12533

def query_key
  @query_key
end

#record_countObject

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



12535
12536
12537
# File 'lib/models/porcelain.rb', line 12535

def record_count
  @record_count
end

#remote_identity_usernameObject

The username of the RemoteIdentity used to access the Resource.



12537
12538
12539
# File 'lib/models/porcelain.rb', line 12537

def remote_identity_username
  @remote_identity_username
end

#replayableObject

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



12539
12540
12541
# File 'lib/models/porcelain.rb', line 12539

def replayable
  @replayable
end

#resource_idObject

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



12541
12542
12543
# File 'lib/models/porcelain.rb', line 12541

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.



12544
12545
12546
# File 'lib/models/porcelain.rb', line 12544

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.



12547
12548
12549
# File 'lib/models/porcelain.rb', line 12547

def resource_tags
  @resource_tags
end

#resource_typeObject

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



12549
12550
12551
# File 'lib/models/porcelain.rb', line 12549

def resource_type
  @resource_type
end

#source_ipObject

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



12551
12552
12553
# File 'lib/models/porcelain.rb', line 12551

def source_ip
  @source_ip
end

#targetObject

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



12553
12554
12555
# File 'lib/models/porcelain.rb', line 12553

def target
  @target
end

#timestampObject

The time at which the Query was started.



12555
12556
12557
# File 'lib/models/porcelain.rb', line 12555

def timestamp
  @timestamp
end

Instance Method Details

#to_json(options = {}) ⇒ Object



12619
12620
12621
12622
12623
12624
12625
# File 'lib/models/porcelain.rb', line 12619

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