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.



8791
8792
8793
8794
8795
8796
8797
8798
8799
8800
8801
8802
8803
8804
8805
8806
8807
8808
8809
8810
8811
8812
8813
8814
8815
8816
8817
8818
8819
8820
8821
8822
8823
8824
8825
8826
8827
8828
8829
8830
8831
8832
8833
8834
8835
8836
8837
8838
8839
8840
8841
8842
8843
8844
8845
8846
8847
8848
8849
# File 'lib/models/porcelain.rb', line 8791

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.



8724
8725
8726
# File 'lib/models/porcelain.rb', line 8724

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.



8727
8728
8729
# File 'lib/models/porcelain.rb', line 8727

def 
  @account_first_name
end

#account_idObject

Unique identifier of the Account that performed the Query.



8729
8730
8731
# File 'lib/models/porcelain.rb', line 8729

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.



8732
8733
8734
# File 'lib/models/porcelain.rb', line 8732

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.



8735
8736
8737
# File 'lib/models/porcelain.rb', line 8735

def 
  @account_tags
end

#authzjsonObject

Authorization metadata associated with this query.



8737
8738
8739
# File 'lib/models/porcelain.rb', line 8737

def authzjson
  @authzjson
end

#captureObject

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



8740
8741
8742
# File 'lib/models/porcelain.rb', line 8740

def capture
  @capture
end

#client_ipObject

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



8742
8743
8744
# File 'lib/models/porcelain.rb', line 8742

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.



8745
8746
8747
# File 'lib/models/porcelain.rb', line 8745

def completed_at
  @completed_at
end

#durationObject

The duration of the Query.



8747
8748
8749
# File 'lib/models/porcelain.rb', line 8747

def duration
  @duration
end

#egress_node_idObject

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



8749
8750
8751
# File 'lib/models/porcelain.rb', line 8749

def egress_node_id
  @egress_node_id
end

#encryptedObject

Indicates that the body of the Query is encrypted.



8751
8752
8753
# File 'lib/models/porcelain.rb', line 8751

def encrypted
  @encrypted
end

#idObject

Unique identifier of the Query.



8753
8754
8755
# File 'lib/models/porcelain.rb', line 8753

def id
  @id
end

#identity_alias_usernameObject

The username of the IdentityAlias used to access the Resource.



8755
8756
8757
# File 'lib/models/porcelain.rb', line 8755

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.



8758
8759
8760
# File 'lib/models/porcelain.rb', line 8758

def query_body
  @query_body
end

#query_categoryObject

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



8760
8761
8762
# File 'lib/models/porcelain.rb', line 8760

def query_category
  @query_category
end

#query_hashObject

The hash of the body of the Query.



8762
8763
8764
# File 'lib/models/porcelain.rb', line 8762

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.



8767
8768
8769
# File 'lib/models/porcelain.rb', line 8767

def query_key
  @query_key
end

#record_countObject

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



8769
8770
8771
# File 'lib/models/porcelain.rb', line 8769

def record_count
  @record_count
end

#remote_identity_usernameObject

The username of the RemoteIdentity used to access the Resource.



8771
8772
8773
# File 'lib/models/porcelain.rb', line 8771

def remote_identity_username
  @remote_identity_username
end

#replayableObject

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



8773
8774
8775
# File 'lib/models/porcelain.rb', line 8773

def replayable
  @replayable
end

#resource_idObject

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



8775
8776
8777
# File 'lib/models/porcelain.rb', line 8775

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.



8778
8779
8780
# File 'lib/models/porcelain.rb', line 8778

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.



8781
8782
8783
# File 'lib/models/porcelain.rb', line 8781

def resource_tags
  @resource_tags
end

#resource_typeObject

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



8783
8784
8785
# File 'lib/models/porcelain.rb', line 8783

def resource_type
  @resource_type
end

#source_ipObject

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



8785
8786
8787
# File 'lib/models/porcelain.rb', line 8785

def source_ip
  @source_ip
end

#targetObject

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



8787
8788
8789
# File 'lib/models/porcelain.rb', line 8787

def target
  @target
end

#timestampObject

The time at which the Query was started.



8789
8790
8791
# File 'lib/models/porcelain.rb', line 8789

def timestamp
  @timestamp
end

Instance Method Details

#to_json(options = {}) ⇒ Object



8851
8852
8853
8854
8855
8856
8857
# File 'lib/models/porcelain.rb', line 8851

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