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.



9739
9740
9741
9742
9743
9744
9745
9746
9747
9748
9749
9750
9751
9752
9753
9754
9755
9756
9757
9758
9759
9760
9761
9762
9763
9764
9765
9766
9767
9768
9769
9770
9771
9772
9773
9774
9775
9776
9777
9778
9779
9780
9781
9782
9783
9784
9785
9786
9787
9788
9789
9790
9791
9792
9793
9794
9795
9796
9797
# File 'lib/models/porcelain.rb', line 9739

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.



9672
9673
9674
# File 'lib/models/porcelain.rb', line 9672

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.



9675
9676
9677
# File 'lib/models/porcelain.rb', line 9675

def 
  @account_first_name
end

#account_idObject

Unique identifier of the Account that performed the Query.



9677
9678
9679
# File 'lib/models/porcelain.rb', line 9677

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.



9680
9681
9682
# File 'lib/models/porcelain.rb', line 9680

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.



9683
9684
9685
# File 'lib/models/porcelain.rb', line 9683

def 
  @account_tags
end

#authzjsonObject

Authorization metadata associated with this query.



9685
9686
9687
# File 'lib/models/porcelain.rb', line 9685

def authzjson
  @authzjson
end

#captureObject

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



9688
9689
9690
# File 'lib/models/porcelain.rb', line 9688

def capture
  @capture
end

#client_ipObject

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



9690
9691
9692
# File 'lib/models/porcelain.rb', line 9690

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.



9693
9694
9695
# File 'lib/models/porcelain.rb', line 9693

def completed_at
  @completed_at
end

#durationObject

The duration of the Query.



9695
9696
9697
# File 'lib/models/porcelain.rb', line 9695

def duration
  @duration
end

#egress_node_idObject

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



9697
9698
9699
# File 'lib/models/porcelain.rb', line 9697

def egress_node_id
  @egress_node_id
end

#encryptedObject

Indicates that the body of the Query is encrypted.



9699
9700
9701
# File 'lib/models/porcelain.rb', line 9699

def encrypted
  @encrypted
end

#idObject

Unique identifier of the Query.



9701
9702
9703
# File 'lib/models/porcelain.rb', line 9701

def id
  @id
end

#identity_alias_usernameObject

The username of the IdentityAlias used to access the Resource.



9703
9704
9705
# File 'lib/models/porcelain.rb', line 9703

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.



9706
9707
9708
# File 'lib/models/porcelain.rb', line 9706

def query_body
  @query_body
end

#query_categoryObject

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



9708
9709
9710
# File 'lib/models/porcelain.rb', line 9708

def query_category
  @query_category
end

#query_hashObject

The hash of the body of the Query.



9710
9711
9712
# File 'lib/models/porcelain.rb', line 9710

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.



9715
9716
9717
# File 'lib/models/porcelain.rb', line 9715

def query_key
  @query_key
end

#record_countObject

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



9717
9718
9719
# File 'lib/models/porcelain.rb', line 9717

def record_count
  @record_count
end

#remote_identity_usernameObject

The username of the RemoteIdentity used to access the Resource.



9719
9720
9721
# File 'lib/models/porcelain.rb', line 9719

def remote_identity_username
  @remote_identity_username
end

#replayableObject

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



9721
9722
9723
# File 'lib/models/porcelain.rb', line 9721

def replayable
  @replayable
end

#resource_idObject

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



9723
9724
9725
# File 'lib/models/porcelain.rb', line 9723

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.



9726
9727
9728
# File 'lib/models/porcelain.rb', line 9726

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.



9729
9730
9731
# File 'lib/models/porcelain.rb', line 9729

def resource_tags
  @resource_tags
end

#resource_typeObject

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



9731
9732
9733
# File 'lib/models/porcelain.rb', line 9731

def resource_type
  @resource_type
end

#source_ipObject

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



9733
9734
9735
# File 'lib/models/porcelain.rb', line 9733

def source_ip
  @source_ip
end

#targetObject

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



9735
9736
9737
# File 'lib/models/porcelain.rb', line 9735

def target
  @target
end

#timestampObject

The time at which the Query was started.



9737
9738
9739
# File 'lib/models/porcelain.rb', line 9737

def timestamp
  @timestamp
end

Instance Method Details

#to_json(options = {}) ⇒ Object



9799
9800
9801
9802
9803
9804
9805
# File 'lib/models/porcelain.rb', line 9799

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