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.



9876
9877
9878
9879
9880
9881
9882
9883
9884
9885
9886
9887
9888
9889
9890
9891
9892
9893
9894
9895
9896
9897
9898
9899
9900
9901
9902
9903
9904
9905
9906
9907
9908
9909
9910
9911
9912
9913
9914
9915
9916
9917
9918
9919
9920
9921
9922
9923
9924
9925
9926
9927
9928
9929
9930
9931
9932
9933
9934
# File 'lib/models/porcelain.rb', line 9876

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.



9809
9810
9811
# File 'lib/models/porcelain.rb', line 9809

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.



9812
9813
9814
# File 'lib/models/porcelain.rb', line 9812

def 
  @account_first_name
end

#account_idObject

Unique identifier of the Account that performed the Query.



9814
9815
9816
# File 'lib/models/porcelain.rb', line 9814

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.



9817
9818
9819
# File 'lib/models/porcelain.rb', line 9817

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.



9820
9821
9822
# File 'lib/models/porcelain.rb', line 9820

def 
  @account_tags
end

#authzjsonObject

Authorization metadata associated with this query.



9822
9823
9824
# File 'lib/models/porcelain.rb', line 9822

def authzjson
  @authzjson
end

#captureObject

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



9825
9826
9827
# File 'lib/models/porcelain.rb', line 9825

def capture
  @capture
end

#client_ipObject

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



9827
9828
9829
# File 'lib/models/porcelain.rb', line 9827

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.



9830
9831
9832
# File 'lib/models/porcelain.rb', line 9830

def completed_at
  @completed_at
end

#durationObject

The duration of the Query.



9832
9833
9834
# File 'lib/models/porcelain.rb', line 9832

def duration
  @duration
end

#egress_node_idObject

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



9834
9835
9836
# File 'lib/models/porcelain.rb', line 9834

def egress_node_id
  @egress_node_id
end

#encryptedObject

Indicates that the body of the Query is encrypted.



9836
9837
9838
# File 'lib/models/porcelain.rb', line 9836

def encrypted
  @encrypted
end

#idObject

Unique identifier of the Query.



9838
9839
9840
# File 'lib/models/porcelain.rb', line 9838

def id
  @id
end

#identity_alias_usernameObject

The username of the IdentityAlias used to access the Resource.



9840
9841
9842
# File 'lib/models/porcelain.rb', line 9840

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.



9843
9844
9845
# File 'lib/models/porcelain.rb', line 9843

def query_body
  @query_body
end

#query_categoryObject

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



9845
9846
9847
# File 'lib/models/porcelain.rb', line 9845

def query_category
  @query_category
end

#query_hashObject

The hash of the body of the Query.



9847
9848
9849
# File 'lib/models/porcelain.rb', line 9847

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.



9852
9853
9854
# File 'lib/models/porcelain.rb', line 9852

def query_key
  @query_key
end

#record_countObject

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



9854
9855
9856
# File 'lib/models/porcelain.rb', line 9854

def record_count
  @record_count
end

#remote_identity_usernameObject

The username of the RemoteIdentity used to access the Resource.



9856
9857
9858
# File 'lib/models/porcelain.rb', line 9856

def remote_identity_username
  @remote_identity_username
end

#replayableObject

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



9858
9859
9860
# File 'lib/models/porcelain.rb', line 9858

def replayable
  @replayable
end

#resource_idObject

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



9860
9861
9862
# File 'lib/models/porcelain.rb', line 9860

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.



9863
9864
9865
# File 'lib/models/porcelain.rb', line 9863

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.



9866
9867
9868
# File 'lib/models/porcelain.rb', line 9866

def resource_tags
  @resource_tags
end

#resource_typeObject

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



9868
9869
9870
# File 'lib/models/porcelain.rb', line 9868

def resource_type
  @resource_type
end

#source_ipObject

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



9870
9871
9872
# File 'lib/models/porcelain.rb', line 9870

def source_ip
  @source_ip
end

#targetObject

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



9872
9873
9874
# File 'lib/models/porcelain.rb', line 9872

def target
  @target
end

#timestampObject

The time at which the Query was started.



9874
9875
9876
# File 'lib/models/porcelain.rb', line 9874

def timestamp
  @timestamp
end

Instance Method Details

#to_json(options = {}) ⇒ Object



9936
9937
9938
9939
9940
9941
9942
# File 'lib/models/porcelain.rb', line 9936

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