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.



14540
14541
14542
14543
14544
14545
14546
14547
14548
14549
14550
14551
14552
14553
14554
14555
14556
14557
14558
14559
14560
14561
14562
14563
14564
14565
14566
14567
14568
14569
14570
14571
14572
14573
14574
14575
14576
14577
14578
14579
14580
14581
14582
14583
14584
14585
14586
14587
14588
14589
14590
14591
14592
14593
14594
14595
14596
14597
14598
14599
14600
# File 'lib/models/porcelain.rb', line 14540

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_email ⇒ Object

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.



14471
14472
14473
# File 'lib/models/porcelain.rb', line 14471

def 
  @account_email
end

#account_first_name ⇒ Object

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.



14474
14475
14476
# File 'lib/models/porcelain.rb', line 14474

def 
  @account_first_name
end

#account_id ⇒ Object

Unique identifier of the Account that performed the Query.



14476
14477
14478
# File 'lib/models/porcelain.rb', line 14476

def 
  @account_id
end

#account_last_name ⇒ Object

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.



14479
14480
14481
# File 'lib/models/porcelain.rb', line 14479

def 
  @account_last_name
end

#account_tags ⇒ Object

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.



14482
14483
14484
# File 'lib/models/porcelain.rb', line 14482

def 
  @account_tags
end

#authzjson ⇒ Object

Authorization metadata associated with this query.



14484
14485
14486
# File 'lib/models/porcelain.rb', line 14484

def authzjson
  @authzjson
end

#capture ⇒ Object

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



14487
14488
14489
# File 'lib/models/porcelain.rb', line 14487

def capture
  @capture
end

#client_ip ⇒ Object

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



14489
14490
14491
# File 'lib/models/porcelain.rb', line 14489

def client_ip
  @client_ip
end

#completed_at ⇒ Object

The time at which the Query was completed. Empty if this record indicates the start of a long-running query.



14492
14493
14494
# File 'lib/models/porcelain.rb', line 14492

def completed_at
  @completed_at
end

#duration ⇒ Object

The duration of the Query.



14494
14495
14496
# File 'lib/models/porcelain.rb', line 14494

def duration
  @duration
end

#egress_node_id ⇒ Object

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



14496
14497
14498
# File 'lib/models/porcelain.rb', line 14496

def egress_node_id
  @egress_node_id
end

#encrypted ⇒ Object

Indicates that the body of the Query is encrypted.



14498
14499
14500
# File 'lib/models/porcelain.rb', line 14498

def encrypted
  @encrypted
end

#id ⇒ Object

Unique identifier of the Query.



14500
14501
14502
# File 'lib/models/porcelain.rb', line 14500

def id
  @id
end

#identity_alias_username ⇒ Object

The username of the IdentityAlias used to access the Resource.



14502
14503
14504
# File 'lib/models/porcelain.rb', line 14502

def identity_alias_username
  @identity_alias_username
end

#metadata_json ⇒ Object

Driver specific metadata associated with this query.



14504
14505
14506
# File 'lib/models/porcelain.rb', line 14504

def 
  @metadata_json
end

#query_body ⇒ Object

The captured content of the Query. For queries against SSH, Kubernetes, and RDP resources, this contains a JSON representation of the QueryCapture.



14507
14508
14509
# File 'lib/models/porcelain.rb', line 14507

def query_body
  @query_body
end

#query_category ⇒ Object

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



14509
14510
14511
# File 'lib/models/porcelain.rb', line 14509

def query_category
  @query_category
end

#query_hash ⇒ Object

The hash of the body of the Query.



14511
14512
14513
# File 'lib/models/porcelain.rb', line 14511

def query_hash
  @query_hash
end

#query_key ⇒ Object

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.



14516
14517
14518
# File 'lib/models/porcelain.rb', line 14516

def query_key
  @query_key
end

#record_count ⇒ Object

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



14518
14519
14520
# File 'lib/models/porcelain.rb', line 14518

def record_count
  @record_count
end

#remote_identity_username ⇒ Object

The username of the RemoteIdentity used to access the Resource.



14520
14521
14522
# File 'lib/models/porcelain.rb', line 14520

def remote_identity_username
  @remote_identity_username
end

#replayable ⇒ Object

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



14522
14523
14524
# File 'lib/models/porcelain.rb', line 14522

def replayable
  @replayable
end

#resource_id ⇒ Object

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



14524
14525
14526
# File 'lib/models/porcelain.rb', line 14524

def resource_id
  @resource_id
end

#resource_name ⇒ Object

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.



14527
14528
14529
# File 'lib/models/porcelain.rb', line 14527

def resource_name
  @resource_name
end

#resource_tags ⇒ Object

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.



14530
14531
14532
# File 'lib/models/porcelain.rb', line 14530

def resource_tags
  @resource_tags
end

#resource_type ⇒ Object

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



14532
14533
14534
# File 'lib/models/porcelain.rb', line 14532

def resource_type
  @resource_type
end

#source_ip ⇒ Object

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



14534
14535
14536
# File 'lib/models/porcelain.rb', line 14534

def source_ip
  @source_ip
end

#target ⇒ Object

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



14536
14537
14538
# File 'lib/models/porcelain.rb', line 14536

def target
  @target
end

#timestamp ⇒ Object

The time at which the Query was started.



14538
14539
14540
# File 'lib/models/porcelain.rb', line 14538

def timestamp
  @timestamp
end

Instance Method Details

#to_json(options = {}) ⇒ Object



14602
14603
14604
14605
14606
14607
14608
# File 'lib/models/porcelain.rb', line 14602

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