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.



14432
14433
14434
14435
14436
14437
14438
14439
14440
14441
14442
14443
14444
14445
14446
14447
14448
14449
14450
14451
14452
14453
14454
14455
14456
14457
14458
14459
14460
14461
14462
14463
14464
14465
14466
14467
14468
14469
14470
14471
14472
14473
14474
14475
14476
14477
14478
14479
14480
14481
14482
14483
14484
14485
14486
14487
14488
14489
14490
14491
14492
# File 'lib/models/porcelain.rb', line 14432

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_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.



14363
14364
14365
# File 'lib/models/porcelain.rb', line 14363

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.



14366
14367
14368
# File 'lib/models/porcelain.rb', line 14366

def 
  @account_first_name
end

#account_idObject

Unique identifier of the Account that performed the Query.



14368
14369
14370
# File 'lib/models/porcelain.rb', line 14368

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.



14371
14372
14373
# File 'lib/models/porcelain.rb', line 14371

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.



14374
14375
14376
# File 'lib/models/porcelain.rb', line 14374

def 
  @account_tags
end

#authzjsonObject

Authorization metadata associated with this query.



14376
14377
14378
# File 'lib/models/porcelain.rb', line 14376

def authzjson
  @authzjson
end

#captureObject

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



14379
14380
14381
# File 'lib/models/porcelain.rb', line 14379

def capture
  @capture
end

#client_ipObject

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



14381
14382
14383
# File 'lib/models/porcelain.rb', line 14381

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.



14384
14385
14386
# File 'lib/models/porcelain.rb', line 14384

def completed_at
  @completed_at
end

#durationObject

The duration of the Query.



14386
14387
14388
# File 'lib/models/porcelain.rb', line 14386

def duration
  @duration
end

#egress_node_idObject

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



14388
14389
14390
# File 'lib/models/porcelain.rb', line 14388

def egress_node_id
  @egress_node_id
end

#encryptedObject

Indicates that the body of the Query is encrypted.



14390
14391
14392
# File 'lib/models/porcelain.rb', line 14390

def encrypted
  @encrypted
end

#idObject

Unique identifier of the Query.



14392
14393
14394
# File 'lib/models/porcelain.rb', line 14392

def id
  @id
end

#identity_alias_usernameObject

The username of the IdentityAlias used to access the Resource.



14394
14395
14396
# File 'lib/models/porcelain.rb', line 14394

def identity_alias_username
  @identity_alias_username
end

#metadata_jsonObject

Driver specific metadata associated with this query.



14396
14397
14398
# File 'lib/models/porcelain.rb', line 14396

def 
  @metadata_json
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.



14399
14400
14401
# File 'lib/models/porcelain.rb', line 14399

def query_body
  @query_body
end

#query_categoryObject

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



14401
14402
14403
# File 'lib/models/porcelain.rb', line 14401

def query_category
  @query_category
end

#query_hashObject

The hash of the body of the Query.



14403
14404
14405
# File 'lib/models/porcelain.rb', line 14403

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.



14408
14409
14410
# File 'lib/models/porcelain.rb', line 14408

def query_key
  @query_key
end

#record_countObject

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



14410
14411
14412
# File 'lib/models/porcelain.rb', line 14410

def record_count
  @record_count
end

#remote_identity_usernameObject

The username of the RemoteIdentity used to access the Resource.



14412
14413
14414
# File 'lib/models/porcelain.rb', line 14412

def remote_identity_username
  @remote_identity_username
end

#replayableObject

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



14414
14415
14416
# File 'lib/models/porcelain.rb', line 14414

def replayable
  @replayable
end

#resource_idObject

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



14416
14417
14418
# File 'lib/models/porcelain.rb', line 14416

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.



14419
14420
14421
# File 'lib/models/porcelain.rb', line 14419

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.



14422
14423
14424
# File 'lib/models/porcelain.rb', line 14422

def resource_tags
  @resource_tags
end

#resource_typeObject

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



14424
14425
14426
# File 'lib/models/porcelain.rb', line 14424

def resource_type
  @resource_type
end

#source_ipObject

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



14426
14427
14428
# File 'lib/models/porcelain.rb', line 14426

def source_ip
  @source_ip
end

#targetObject

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



14428
14429
14430
# File 'lib/models/porcelain.rb', line 14428

def target
  @target
end

#timestampObject

The time at which the Query was started.



14430
14431
14432
# File 'lib/models/porcelain.rb', line 14430

def timestamp
  @timestamp
end

Instance Method Details

#to_json(options = {}) ⇒ Object



14494
14495
14496
14497
14498
14499
14500
# File 'lib/models/porcelain.rb', line 14494

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