strongdm 3.6.1 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.git/ORIG_HEAD +1 -1
- data/.git/index +0 -0
- data/.git/logs/HEAD +3 -3
- data/.git/logs/refs/heads/master +2 -2
- data/.git/logs/refs/remotes/origin/HEAD +1 -1
- data/.git/objects/pack/{pack-c0eff6575c38c9865988c2b59ce4060fff518355.idx → pack-6ff24cd25221e788819ff2b8012b5e54f3c5d426.idx} +0 -0
- data/.git/objects/pack/{pack-c0eff6575c38c9865988c2b59ce4060fff518355.pack → pack-6ff24cd25221e788819ff2b8012b5e54f3c5d426.pack} +0 -0
- data/.git/packed-refs +3 -2
- data/.git/refs/heads/master +1 -1
- data/lib/constants.rb +311 -0
- data/lib/grpc/account_attachments_history_pb.rb +48 -0
- data/lib/grpc/account_attachments_history_services_pb.rb +37 -0
- data/lib/grpc/account_grants_history_pb.rb +48 -0
- data/lib/grpc/account_grants_history_services_pb.rb +37 -0
- data/lib/grpc/account_permissions_pb.rb +48 -0
- data/lib/grpc/account_permissions_services_pb.rb +38 -0
- data/lib/grpc/account_resources_pb.rb +49 -0
- data/lib/grpc/account_resources_services_pb.rb +38 -0
- data/lib/grpc/accounts_history_pb.rb +48 -0
- data/lib/grpc/accounts_history_services_pb.rb +37 -0
- data/lib/grpc/activities_pb.rb +77 -0
- data/lib/grpc/activities_services_pb.rb +41 -0
- data/lib/grpc/nodes_history_pb.rb +48 -0
- data/lib/grpc/nodes_history_services_pb.rb +37 -0
- data/lib/grpc/organization_history_pb.rb +74 -0
- data/lib/grpc/organization_history_services_pb.rb +37 -0
- data/lib/grpc/plumbing.rb +977 -4
- data/lib/grpc/queries_pb.rb +67 -0
- data/lib/grpc/queries_services_pb.rb +39 -0
- data/lib/grpc/remote_identities_history_pb.rb +48 -0
- data/lib/grpc/remote_identities_history_services_pb.rb +37 -0
- data/lib/grpc/remote_identity_groups_history_pb.rb +48 -0
- data/lib/grpc/remote_identity_groups_history_services_pb.rb +37 -0
- data/lib/grpc/replays_pb.rb +50 -0
- data/lib/grpc/replays_services_pb.rb +38 -0
- data/lib/grpc/resources_history_pb.rb +48 -0
- data/lib/grpc/resources_history_services_pb.rb +37 -0
- data/lib/grpc/role_resources_history_pb.rb +48 -0
- data/lib/grpc/role_resources_history_services_pb.rb +37 -0
- data/lib/grpc/role_resources_pb.rb +46 -0
- data/lib/grpc/role_resources_services_pb.rb +38 -0
- data/lib/grpc/roles_history_pb.rb +48 -0
- data/lib/grpc/roles_history_services_pb.rb +37 -0
- data/lib/grpc/secret_stores_history_pb.rb +48 -0
- data/lib/grpc/secret_stores_history_services_pb.rb +37 -0
- data/lib/models/porcelain.rb +912 -0
- data/lib/strongdm.rb +219 -1
- data/lib/svc.rb +1555 -120
- data/lib/version +1 -1
- data/lib/version.rb +1 -1
- metadata +38 -4
data/lib/strongdm.rb
CHANGED
@@ -29,7 +29,7 @@ module SDM #:nodoc:
|
|
29
29
|
DEFAULT_BASE_RETRY_DELAY = 0.0030 # 30 ms
|
30
30
|
DEFAULT_MAX_RETRY_DELAY = 300 # 300 seconds
|
31
31
|
API_VERSION = "2021-08-23"
|
32
|
-
USER_AGENT = "strongdm-sdk-ruby/3.
|
32
|
+
USER_AGENT = "strongdm-sdk-ruby/3.7.0"
|
33
33
|
private_constant :DEFAULT_MAX_RETRIES, :DEFAULT_BASE_RETRY_DELAY, :DEFAULT_MAX_RETRY_DELAY, :API_VERSION, :USER_AGENT
|
34
34
|
|
35
35
|
# Creates a new strongDM API client.
|
@@ -43,6 +43,7 @@ module SDM #:nodoc:
|
|
43
43
|
@base_retry_delay = DEFAULT_BASE_RETRY_DELAY
|
44
44
|
@max_retry_delay = DEFAULT_MAX_RETRY_DELAY
|
45
45
|
@expose_rate_limit_errors = (not retry_rate_limit_errors)
|
46
|
+
@snapshot_time = nil
|
46
47
|
begin
|
47
48
|
if insecure
|
48
49
|
@channel = GRPC::Core::Channel.new(host, {}, :this_channel_is_insecure)
|
@@ -54,15 +55,32 @@ module SDM #:nodoc:
|
|
54
55
|
raise Plumbing::convert_error_to_porcelain(exception)
|
55
56
|
end
|
56
57
|
@account_attachments = AccountAttachments.new(@channel, self)
|
58
|
+
@account_attachments_history = AccountAttachmentsHistory.new(@channel, self)
|
57
59
|
@account_grants = AccountGrants.new(@channel, self)
|
60
|
+
@account_grants_history = AccountGrantsHistory.new(@channel, self)
|
61
|
+
@account_permissions = AccountPermissions.new(@channel, self)
|
62
|
+
@account_resources = AccountResources.new(@channel, self)
|
58
63
|
@accounts = Accounts.new(@channel, self)
|
64
|
+
@accounts_history = AccountsHistory.new(@channel, self)
|
65
|
+
@activities = Activities.new(@channel, self)
|
59
66
|
@control_panel = ControlPanel.new(@channel, self)
|
60
67
|
@nodes = Nodes.new(@channel, self)
|
68
|
+
@nodes_history = NodesHistory.new(@channel, self)
|
69
|
+
@organization_history = OrganizationHistory.new(@channel, self)
|
70
|
+
@queries = Queries.new(@channel, self)
|
61
71
|
@remote_identities = RemoteIdentities.new(@channel, self)
|
72
|
+
@remote_identities_history = RemoteIdentitiesHistory.new(@channel, self)
|
62
73
|
@remote_identity_groups = RemoteIdentityGroups.new(@channel, self)
|
74
|
+
@remote_identity_groups_history = RemoteIdentityGroupsHistory.new(@channel, self)
|
75
|
+
@replays = Replays.new(@channel, self)
|
63
76
|
@resources = Resources.new(@channel, self)
|
77
|
+
@resources_history = ResourcesHistory.new(@channel, self)
|
78
|
+
@role_resources = RoleResources.new(@channel, self)
|
79
|
+
@role_resources_history = RoleResourcesHistory.new(@channel, self)
|
64
80
|
@roles = Roles.new(@channel, self)
|
81
|
+
@roles_history = RolesHistory.new(@channel, self)
|
65
82
|
@secret_stores = SecretStores.new(@channel, self)
|
83
|
+
@secret_stores_history = SecretStoresHistory.new(@channel, self)
|
66
84
|
@_test_options = Hash.new
|
67
85
|
end
|
68
86
|
|
@@ -137,26 +155,64 @@ module SDM #:nodoc:
|
|
137
155
|
return (err.code() == 13 or err.code() == 14)
|
138
156
|
end
|
139
157
|
|
158
|
+
# Constructs a read-only client that will provide historical data from the provided timestamp.
|
159
|
+
# See {SnapshotClient}.
|
160
|
+
def snapshot_at(snapshot_time)
|
161
|
+
client = self.clone
|
162
|
+
client.snapshot_time = snapshot_time
|
163
|
+
return SnapshotClient.new(client)
|
164
|
+
end
|
165
|
+
|
140
166
|
attr_reader :max_retries
|
141
167
|
attr_reader :base_retry_delay
|
142
168
|
attr_reader :max_retry_delay
|
143
169
|
|
144
170
|
# API authentication token (read-only).
|
145
171
|
attr_reader :api_access_key
|
172
|
+
# Optional timestamp at which to provide historical data
|
173
|
+
attr_reader :snapshot_time
|
146
174
|
# AccountAttachments assign an account to a role.
|
147
175
|
#
|
148
176
|
# See {AccountAttachments}.
|
149
177
|
attr_reader :account_attachments
|
178
|
+
# AccountAttachmentsHistory records all changes to the state of an AccountAttachment.
|
179
|
+
#
|
180
|
+
# See {AccountAttachmentsHistory}.
|
181
|
+
attr_reader :account_attachments_history
|
150
182
|
# AccountGrants assign a resource directly to an account, giving the account the permission to connect to that resource.
|
151
183
|
#
|
152
184
|
# See {AccountGrants}.
|
153
185
|
attr_reader :account_grants
|
186
|
+
# AccountGrantsHistory records all changes to the state of an AccountGrant.
|
187
|
+
#
|
188
|
+
# See {AccountGrantsHistory}.
|
189
|
+
attr_reader :account_grants_history
|
190
|
+
# AccountPermissions records the granular permissions accounts have, allowing them to execute
|
191
|
+
# relevant commands via StrongDM's APIs.
|
192
|
+
#
|
193
|
+
# See {AccountPermissions}.
|
194
|
+
attr_reader :account_permissions
|
195
|
+
# AccountResources enumerates the resources to which accounts have access.
|
196
|
+
# The AccountResources service is read-only.
|
197
|
+
#
|
198
|
+
# See {AccountResources}.
|
199
|
+
attr_reader :account_resources
|
154
200
|
# Accounts are users that have access to strongDM. There are two types of accounts:
|
155
201
|
# 1. **Users:** humans who are authenticated through username and password or SSO.
|
156
202
|
# 2. **Service Accounts:** machines that are authenticated using a service token.
|
157
203
|
#
|
158
204
|
# See {Accounts}.
|
159
205
|
attr_reader :accounts
|
206
|
+
# AccountsHistory records all changes to the state of an Account.
|
207
|
+
#
|
208
|
+
# See {AccountsHistory}.
|
209
|
+
attr_reader :accounts_history
|
210
|
+
# An Activity is a record of an action taken against a strongDM deployment, e.g.
|
211
|
+
# a user creation, resource deletion, sso configuration change, etc. The Activities
|
212
|
+
# service is read-only.
|
213
|
+
#
|
214
|
+
# See {Activities}.
|
215
|
+
attr_reader :activities
|
160
216
|
# ControlPanel contains all administrative controls.
|
161
217
|
#
|
162
218
|
# See {ControlPanel}.
|
@@ -167,31 +223,193 @@ module SDM #:nodoc:
|
|
167
223
|
#
|
168
224
|
# See {Nodes}.
|
169
225
|
attr_reader :nodes
|
226
|
+
# NodesHistory records all changes to the state of a Node.
|
227
|
+
#
|
228
|
+
# See {NodesHistory}.
|
229
|
+
attr_reader :nodes_history
|
230
|
+
# OrganizationHistory records all changes to the state of an Organization.
|
231
|
+
#
|
232
|
+
# See {OrganizationHistory}.
|
233
|
+
attr_reader :organization_history
|
234
|
+
# A Query is a record of a single client request to a resource, such as an SQL query.
|
235
|
+
# Long-running SSH, RDP, or Kubernetes interactive sessions also count as queries.
|
236
|
+
# The Queries service is read-only.
|
237
|
+
#
|
238
|
+
# See {Queries}.
|
239
|
+
attr_reader :queries
|
170
240
|
# RemoteIdentities assign a resource directly to an account, giving the account the permission to connect to that resource.
|
171
241
|
#
|
172
242
|
# See {RemoteIdentities}.
|
173
243
|
attr_reader :remote_identities
|
244
|
+
# RemoteIdentitiesHistory records all changes to the state of a RemoteIdentity.
|
245
|
+
#
|
246
|
+
# See {RemoteIdentitiesHistory}.
|
247
|
+
attr_reader :remote_identities_history
|
174
248
|
# A RemoteIdentityGroup is a named grouping of Remote Identities for Accounts.
|
175
249
|
# An Account's relationship to a RemoteIdentityGroup is defined via RemoteIdentity objects.
|
176
250
|
#
|
177
251
|
# See {RemoteIdentityGroups}.
|
178
252
|
attr_reader :remote_identity_groups
|
253
|
+
# RemoteIdentityGroupsHistory records all changes to the state of a RemoteIdentityGroup.
|
254
|
+
#
|
255
|
+
# See {RemoteIdentityGroupsHistory}.
|
256
|
+
attr_reader :remote_identity_groups_history
|
257
|
+
# A Replay captures the data transferred over a long-running SSH, RDP, or Kubernetes interactive session
|
258
|
+
# (otherwise referred to as a query). The Replays service is read-only.
|
259
|
+
#
|
260
|
+
# See {Replays}.
|
261
|
+
attr_reader :replays
|
179
262
|
# Resources are databases, servers, clusters, websites, or clouds that strongDM
|
180
263
|
# delegates access to.
|
181
264
|
#
|
182
265
|
# See {Resources}.
|
183
266
|
attr_reader :resources
|
267
|
+
# ResourcesHistory records all changes to the state of a Resource.
|
268
|
+
#
|
269
|
+
# See {ResourcesHistory}.
|
270
|
+
attr_reader :resources_history
|
271
|
+
# RoleResources enumerates the resources to which roles have access.
|
272
|
+
# The RoleResources service is read-only.
|
273
|
+
#
|
274
|
+
# See {RoleResources}.
|
275
|
+
attr_reader :role_resources
|
276
|
+
# RoleResourcesHistory records all changes to the state of a RoleResource.
|
277
|
+
#
|
278
|
+
# See {RoleResourcesHistory}.
|
279
|
+
attr_reader :role_resources_history
|
184
280
|
# A Role has a list of access rules which determine which Resources the members
|
185
281
|
# of the Role have access to. An Account can be a member of multiple Roles via
|
186
282
|
# AccountAttachments.
|
187
283
|
#
|
188
284
|
# See {Roles}.
|
189
285
|
attr_reader :roles
|
286
|
+
# RolesHistory records all changes to the state of a Role.
|
287
|
+
#
|
288
|
+
# See {RolesHistory}.
|
289
|
+
attr_reader :roles_history
|
190
290
|
# SecretStores are servers where resource secrets (passwords, keys) are stored.
|
191
291
|
#
|
192
292
|
# See {SecretStores}.
|
193
293
|
attr_reader :secret_stores
|
294
|
+
# SecretStoresHistory records all changes to the state of a SecretStore.
|
295
|
+
#
|
296
|
+
# See {SecretStoresHistory}.
|
297
|
+
attr_reader :secret_stores_history
|
194
298
|
# @private
|
195
299
|
attr_reader :_test_options
|
300
|
+
|
301
|
+
protected
|
302
|
+
|
303
|
+
attr_writer :snapshot_time
|
304
|
+
|
305
|
+
private
|
306
|
+
|
307
|
+
def initialize_copy(other)
|
308
|
+
@account_attachments = AccountAttachments.new(@channel, self)
|
309
|
+
@account_attachments_history = AccountAttachmentsHistory.new(@channel, self)
|
310
|
+
@account_grants = AccountGrants.new(@channel, self)
|
311
|
+
@account_grants_history = AccountGrantsHistory.new(@channel, self)
|
312
|
+
@account_permissions = AccountPermissions.new(@channel, self)
|
313
|
+
@account_resources = AccountResources.new(@channel, self)
|
314
|
+
@accounts = Accounts.new(@channel, self)
|
315
|
+
@accounts_history = AccountsHistory.new(@channel, self)
|
316
|
+
@activities = Activities.new(@channel, self)
|
317
|
+
@control_panel = ControlPanel.new(@channel, self)
|
318
|
+
@nodes = Nodes.new(@channel, self)
|
319
|
+
@nodes_history = NodesHistory.new(@channel, self)
|
320
|
+
@organization_history = OrganizationHistory.new(@channel, self)
|
321
|
+
@queries = Queries.new(@channel, self)
|
322
|
+
@remote_identities = RemoteIdentities.new(@channel, self)
|
323
|
+
@remote_identities_history = RemoteIdentitiesHistory.new(@channel, self)
|
324
|
+
@remote_identity_groups = RemoteIdentityGroups.new(@channel, self)
|
325
|
+
@remote_identity_groups_history = RemoteIdentityGroupsHistory.new(@channel, self)
|
326
|
+
@replays = Replays.new(@channel, self)
|
327
|
+
@resources = Resources.new(@channel, self)
|
328
|
+
@resources_history = ResourcesHistory.new(@channel, self)
|
329
|
+
@role_resources = RoleResources.new(@channel, self)
|
330
|
+
@role_resources_history = RoleResourcesHistory.new(@channel, self)
|
331
|
+
@roles = Roles.new(@channel, self)
|
332
|
+
@roles_history = RolesHistory.new(@channel, self)
|
333
|
+
@secret_stores = SecretStores.new(@channel, self)
|
334
|
+
@secret_stores_history = SecretStoresHistory.new(@channel, self)
|
335
|
+
end
|
336
|
+
end
|
337
|
+
|
338
|
+
# SnapshotClient exposes methods to query historical records at a provided timestamp.
|
339
|
+
class SnapshotClient
|
340
|
+
def initialize(client)
|
341
|
+
@account_attachments = SnapshotAccountAttachments.new(client.account_attachments)
|
342
|
+
@account_grants = SnapshotAccountGrants.new(client.account_grants)
|
343
|
+
@account_permissions = SnapshotAccountPermissions.new(client.account_permissions)
|
344
|
+
@account_resources = SnapshotAccountResources.new(client.account_resources)
|
345
|
+
@accounts = SnapshotAccounts.new(client.accounts)
|
346
|
+
@nodes = SnapshotNodes.new(client.nodes)
|
347
|
+
@remote_identities = SnapshotRemoteIdentities.new(client.remote_identities)
|
348
|
+
@remote_identity_groups = SnapshotRemoteIdentityGroups.new(client.remote_identity_groups)
|
349
|
+
@resources = SnapshotResources.new(client.resources)
|
350
|
+
@role_resources = SnapshotRoleResources.new(client.role_resources)
|
351
|
+
@roles = SnapshotRoles.new(client.roles)
|
352
|
+
@secret_stores = SnapshotSecretStores.new(client.secret_stores)
|
353
|
+
end
|
354
|
+
|
355
|
+
# AccountAttachments assign an account to a role.
|
356
|
+
#
|
357
|
+
# See {SnapshotAccountAttachments}.
|
358
|
+
attr_reader :account_attachments
|
359
|
+
# AccountGrants assign a resource directly to an account, giving the account the permission to connect to that resource.
|
360
|
+
#
|
361
|
+
# See {SnapshotAccountGrants}.
|
362
|
+
attr_reader :account_grants
|
363
|
+
# AccountPermissions records the granular permissions accounts have, allowing them to execute
|
364
|
+
# relevant commands via StrongDM's APIs.
|
365
|
+
#
|
366
|
+
# See {SnapshotAccountPermissions}.
|
367
|
+
attr_reader :account_permissions
|
368
|
+
# AccountResources enumerates the resources to which accounts have access.
|
369
|
+
# The AccountResources service is read-only.
|
370
|
+
#
|
371
|
+
# See {SnapshotAccountResources}.
|
372
|
+
attr_reader :account_resources
|
373
|
+
# Accounts are users that have access to strongDM. There are two types of accounts:
|
374
|
+
# 1. **Users:** humans who are authenticated through username and password or SSO.
|
375
|
+
# 2. **Service Accounts:** machines that are authenticated using a service token.
|
376
|
+
#
|
377
|
+
# See {SnapshotAccounts}.
|
378
|
+
attr_reader :accounts
|
379
|
+
# Nodes make up the strongDM network, and allow your users to connect securely to your resources. There are two types of nodes:
|
380
|
+
# - **Gateways** are the entry points into network. They listen for connection from the strongDM client, and provide access to databases and servers.
|
381
|
+
# - **Relays** are used to extend the strongDM network into segmented subnets. They provide access to databases and servers but do not listen for incoming connections.
|
382
|
+
#
|
383
|
+
# See {SnapshotNodes}.
|
384
|
+
attr_reader :nodes
|
385
|
+
# RemoteIdentities assign a resource directly to an account, giving the account the permission to connect to that resource.
|
386
|
+
#
|
387
|
+
# See {SnapshotRemoteIdentities}.
|
388
|
+
attr_reader :remote_identities
|
389
|
+
# A RemoteIdentityGroup is a named grouping of Remote Identities for Accounts.
|
390
|
+
# An Account's relationship to a RemoteIdentityGroup is defined via RemoteIdentity objects.
|
391
|
+
#
|
392
|
+
# See {SnapshotRemoteIdentityGroups}.
|
393
|
+
attr_reader :remote_identity_groups
|
394
|
+
# Resources are databases, servers, clusters, websites, or clouds that strongDM
|
395
|
+
# delegates access to.
|
396
|
+
#
|
397
|
+
# See {SnapshotResources}.
|
398
|
+
attr_reader :resources
|
399
|
+
# RoleResources enumerates the resources to which roles have access.
|
400
|
+
# The RoleResources service is read-only.
|
401
|
+
#
|
402
|
+
# See {SnapshotRoleResources}.
|
403
|
+
attr_reader :role_resources
|
404
|
+
# A Role has a list of access rules which determine which Resources the members
|
405
|
+
# of the Role have access to. An Account can be a member of multiple Roles via
|
406
|
+
# AccountAttachments.
|
407
|
+
#
|
408
|
+
# See {SnapshotRoles}.
|
409
|
+
attr_reader :roles
|
410
|
+
# SecretStores are servers where resource secrets (passwords, keys) are stored.
|
411
|
+
#
|
412
|
+
# See {SnapshotSecretStores}.
|
413
|
+
attr_reader :secret_stores
|
196
414
|
end
|
197
415
|
end
|