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.



9055
9056
9057
9058
9059
9060
9061
9062
9063
9064
9065
9066
9067
9068
9069
9070
9071
9072
9073
9074
9075
9076
9077
9078
9079
9080
9081
9082
9083
9084
9085
9086
9087
9088
9089
9090
9091
9092
9093
9094
9095
9096
9097
9098
9099
9100
9101
9102
9103
9104
9105
9106
9107
9108
9109
9110
9111
9112
9113
# File 'lib/models/porcelain.rb', line 9055

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.



8988
8989
8990
# File 'lib/models/porcelain.rb', line 8988

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.



8991
8992
8993
# File 'lib/models/porcelain.rb', line 8991

def 
  @account_first_name
end

#account_idObject

Unique identifier of the Account that performed the Query.



8993
8994
8995
# File 'lib/models/porcelain.rb', line 8993

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.



8996
8997
8998
# File 'lib/models/porcelain.rb', line 8996

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.



8999
9000
9001
# File 'lib/models/porcelain.rb', line 8999

def 
  @account_tags
end

#authzjsonObject

Authorization metadata associated with this query.



9001
9002
9003
# File 'lib/models/porcelain.rb', line 9001

def authzjson
  @authzjson
end

#captureObject

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



9004
9005
9006
# File 'lib/models/porcelain.rb', line 9004

def capture
  @capture
end

#client_ipObject

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



9006
9007
9008
# File 'lib/models/porcelain.rb', line 9006

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.



9009
9010
9011
# File 'lib/models/porcelain.rb', line 9009

def completed_at
  @completed_at
end

#durationObject

The duration of the Query.



9011
9012
9013
# File 'lib/models/porcelain.rb', line 9011

def duration
  @duration
end

#egress_node_idObject

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



9013
9014
9015
# File 'lib/models/porcelain.rb', line 9013

def egress_node_id
  @egress_node_id
end

#encryptedObject

Indicates that the body of the Query is encrypted.



9015
9016
9017
# File 'lib/models/porcelain.rb', line 9015

def encrypted
  @encrypted
end

#idObject

Unique identifier of the Query.



9017
9018
9019
# File 'lib/models/porcelain.rb', line 9017

def id
  @id
end

#identity_alias_usernameObject

The username of the IdentityAlias used to access the Resource.



9019
9020
9021
# File 'lib/models/porcelain.rb', line 9019

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.



9022
9023
9024
# File 'lib/models/porcelain.rb', line 9022

def query_body
  @query_body
end

#query_categoryObject

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



9024
9025
9026
# File 'lib/models/porcelain.rb', line 9024

def query_category
  @query_category
end

#query_hashObject

The hash of the body of the Query.



9026
9027
9028
# File 'lib/models/porcelain.rb', line 9026

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.



9031
9032
9033
# File 'lib/models/porcelain.rb', line 9031

def query_key
  @query_key
end

#record_countObject

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



9033
9034
9035
# File 'lib/models/porcelain.rb', line 9033

def record_count
  @record_count
end

#remote_identity_usernameObject

The username of the RemoteIdentity used to access the Resource.



9035
9036
9037
# File 'lib/models/porcelain.rb', line 9035

def remote_identity_username
  @remote_identity_username
end

#replayableObject

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



9037
9038
9039
# File 'lib/models/porcelain.rb', line 9037

def replayable
  @replayable
end

#resource_idObject

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



9039
9040
9041
# File 'lib/models/porcelain.rb', line 9039

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.



9042
9043
9044
# File 'lib/models/porcelain.rb', line 9042

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.



9045
9046
9047
# File 'lib/models/porcelain.rb', line 9045

def resource_tags
  @resource_tags
end

#resource_typeObject

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



9047
9048
9049
# File 'lib/models/porcelain.rb', line 9047

def resource_type
  @resource_type
end

#source_ipObject

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



9049
9050
9051
# File 'lib/models/porcelain.rb', line 9049

def source_ip
  @source_ip
end

#targetObject

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



9051
9052
9053
# File 'lib/models/porcelain.rb', line 9051

def target
  @target
end

#timestampObject

The time at which the Query was started.



9053
9054
9055
# File 'lib/models/porcelain.rb', line 9053

def timestamp
  @timestamp
end

Instance Method Details

#to_json(options = {}) ⇒ Object



9115
9116
9117
9118
9119
9120
9121
# File 'lib/models/porcelain.rb', line 9115

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