strongdm 15.26.0 → 15.28.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-c7c08cb7bc1b28fe985a95fcfab51cb58c8e3705.idx → pack-57422f9648cd00a4b26afeacb8a0ba4bd5eb4b5b.idx} +0 -0
- data/.git/objects/pack/{pack-c7c08cb7bc1b28fe985a95fcfab51cb58c8e3705.pack → pack-57422f9648cd00a4b26afeacb8a0ba4bd5eb4b5b.pack} +0 -0
- data/.git/packed-refs +4 -2
- data/.git/refs/heads/master +1 -1
- data/lib/grpc/drivers_pb.rb +23 -0
- data/lib/grpc/nodes_pb.rb +14 -0
- data/lib/grpc/nodes_services_pb.rb +8 -3
- data/lib/grpc/options_pb.rb +1 -0
- data/lib/grpc/plumbing.rb +116 -0
- data/lib/models/porcelain.rb +124 -0
- data/lib/strongdm.rb +11 -7
- data/lib/svc.rb +42 -3
- data/lib/version +1 -1
- data/lib/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8f1147223e088e14c3dd89ba96393938a1711c229baa9c7a0186469bfd2953bf
|
|
4
|
+
data.tar.gz: ddd4c1052c4a212ad31b7694595ab1bc824b622f0d54587cd286b3087ce3a532
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4a782248d81c18bd016d1aba9f7534fa46f289ddab40e2a7516d723851ca112060d5810cad794efd6d67a3497a9f84af8807c4d16f0d313f7415d6589ef9071c
|
|
7
|
+
data.tar.gz: 787d75924565bf28110d6e22ba8c75c7a8027f373541182e5e3edd6b7bfacc18ceef1a9fdfb10776d90a2008c408bea157120c7b364a14ca8d1b8d509bc6b425
|
data/.git/ORIG_HEAD
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
25679d89a3cf0c95ce09a35f00dd9bb6425e0946
|
data/.git/index
CHANGED
|
Binary file
|
data/.git/logs/HEAD
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
0000000000000000000000000000000000000000
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
0000000000000000000000000000000000000000 25679d89a3cf0c95ce09a35f00dd9bb6425e0946 root <root@9c364c0f1ac7.(none)> 1762804882 +0000 clone: from github.com:strongdm/strongdm-sdk-ruby.git
|
|
2
|
+
25679d89a3cf0c95ce09a35f00dd9bb6425e0946 25679d89a3cf0c95ce09a35f00dd9bb6425e0946 root <root@9c364c0f1ac7.(none)> 1762804882 +0000 checkout: moving from master to master
|
|
3
|
+
25679d89a3cf0c95ce09a35f00dd9bb6425e0946 a19a5670f1583260058d10160faeee46ef5c6346 root <root@9c364c0f1ac7.(none)> 1762804882 +0000 merge origin/development: Fast-forward
|
data/.git/logs/refs/heads/master
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
0000000000000000000000000000000000000000
|
|
2
|
-
|
|
1
|
+
0000000000000000000000000000000000000000 25679d89a3cf0c95ce09a35f00dd9bb6425e0946 root <root@9c364c0f1ac7.(none)> 1762804882 +0000 clone: from github.com:strongdm/strongdm-sdk-ruby.git
|
|
2
|
+
25679d89a3cf0c95ce09a35f00dd9bb6425e0946 a19a5670f1583260058d10160faeee46ef5c6346 root <root@9c364c0f1ac7.(none)> 1762804882 +0000 merge origin/development: Fast-forward
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0000000000000000000000000000000000000000
|
|
1
|
+
0000000000000000000000000000000000000000 25679d89a3cf0c95ce09a35f00dd9bb6425e0946 root <root@9c364c0f1ac7.(none)> 1762804882 +0000 clone: from github.com:strongdm/strongdm-sdk-ruby.git
|
|
Binary file
|
|
Binary file
|
data/.git/packed-refs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# pack-refs with: peeled fully-peeled sorted
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
a19a5670f1583260058d10160faeee46ef5c6346 refs/remotes/origin/development
|
|
3
|
+
25679d89a3cf0c95ce09a35f00dd9bb6425e0946 refs/remotes/origin/master
|
|
4
4
|
2e4fe8087177ddea9b3991ca499f758384839c89 refs/tags/untagged-84fd83a4484c785cce63
|
|
5
5
|
04f604866214fab4d5663b5171a3e596331577bd refs/tags/v0.9.4
|
|
6
6
|
6f9a7b75b345c65fb554884907b7060680c807b7 refs/tags/v0.9.5
|
|
@@ -116,6 +116,8 @@ ac9b86121b9542f28b614f897f7a61f34363410b refs/tags/v15.10.0
|
|
|
116
116
|
dbc1e295841d51376c44f987d9eecf5c8427c478 refs/tags/v15.22.0
|
|
117
117
|
1fb12400f09101921542776d3887b93103dd9c5f refs/tags/v15.23.0
|
|
118
118
|
a4fd017725511cf32effc6426ca74b714644d37d refs/tags/v15.25.0
|
|
119
|
+
9a13de3384bb6d3b929209e8c93515c9a146bfc0 refs/tags/v15.26.0
|
|
120
|
+
25679d89a3cf0c95ce09a35f00dd9bb6425e0946 refs/tags/v15.27.0
|
|
119
121
|
cf3b15b82cb0c4229609c07c870c6cb4fd38ef75 refs/tags/v15.4.0
|
|
120
122
|
0be2c5e7f7a90c49077548cb3a9bce234219b9f0 refs/tags/v15.5.0
|
|
121
123
|
4b9cd43c5dda3f369b82b6a56132a5470ff9ff53 refs/tags/v15.6.0
|
data/.git/refs/heads/master
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
a19a5670f1583260058d10160faeee46ef5c6346
|
data/lib/grpc/drivers_pb.rb
CHANGED
|
@@ -75,6 +75,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
|
|
|
75
75
|
optional :dynamo_dbiam, :message, 501, "v1.DynamoDBIAM"
|
|
76
76
|
optional :elastic, :message, 601, "v1.Elastic"
|
|
77
77
|
optional :elasticache_redis, :message, 1601, "v1.ElasticacheRedis"
|
|
78
|
+
optional :elasticache_redis_iam, :message, 1603, "v1.ElasticacheRedisIAM"
|
|
78
79
|
optional :entra_id, :message, 2803, "v1.EntraID"
|
|
79
80
|
optional :gcp, :message, 2700, "v1.GCP"
|
|
80
81
|
optional :gcp_console, :message, 3300, "v1.GCPConsole"
|
|
@@ -1047,6 +1048,25 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
|
|
|
1047
1048
|
optional :tls_required, :bool, 5
|
|
1048
1049
|
optional :username, :string, 6
|
|
1049
1050
|
end
|
|
1051
|
+
add_message "v1.ElasticacheRedisIAM" do
|
|
1052
|
+
optional :id, :string, 32768
|
|
1053
|
+
optional :name, :string, 32769
|
|
1054
|
+
optional :healthy, :bool, 32770
|
|
1055
|
+
optional :tags, :message, 32771, "v1.Tags"
|
|
1056
|
+
optional :secret_store_id, :string, 32772
|
|
1057
|
+
optional :egress_filter, :string, 32773
|
|
1058
|
+
optional :bind_interface, :string, 32774
|
|
1059
|
+
optional :proxy_cluster_id, :string, 32776
|
|
1060
|
+
optional :subdomain, :string, 32775
|
|
1061
|
+
optional :hostname, :string, 1
|
|
1062
|
+
optional :port, :int32, 5
|
|
1063
|
+
optional :port_override, :int32, 2
|
|
1064
|
+
optional :region, :string, 9
|
|
1065
|
+
optional :role_assumption_arn, :string, 10
|
|
1066
|
+
optional :role_external_id, :string, 11
|
|
1067
|
+
optional :tls_required, :bool, 6
|
|
1068
|
+
optional :username, :string, 3
|
|
1069
|
+
end
|
|
1050
1070
|
add_message "v1.EntraID" do
|
|
1051
1071
|
optional :id, :string, 32768
|
|
1052
1072
|
optional :name, :string, 32769
|
|
@@ -1680,6 +1700,8 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
|
|
|
1680
1700
|
optional :subdomain, :string, 32775
|
|
1681
1701
|
optional :downgrade_nla_connections, :bool, 6
|
|
1682
1702
|
optional :hostname, :string, 1
|
|
1703
|
+
optional :identity_alias_healthcheck_username, :string, 12
|
|
1704
|
+
optional :identity_set_id, :string, 11
|
|
1683
1705
|
optional :lock_required, :bool, 10
|
|
1684
1706
|
optional :password, :string, 3
|
|
1685
1707
|
optional :port, :int32, 5
|
|
@@ -2177,6 +2199,7 @@ module V1
|
|
|
2177
2199
|
DynamoDBIAM = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("v1.DynamoDBIAM").msgclass
|
|
2178
2200
|
Elastic = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("v1.Elastic").msgclass
|
|
2179
2201
|
ElasticacheRedis = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("v1.ElasticacheRedis").msgclass
|
|
2202
|
+
ElasticacheRedisIAM = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("v1.ElasticacheRedisIAM").msgclass
|
|
2180
2203
|
EntraID = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("v1.EntraID").msgclass
|
|
2181
2204
|
GCP = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("v1.GCP").msgclass
|
|
2182
2205
|
GCPConsole = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("v1.GCPConsole").msgclass
|
data/lib/grpc/nodes_pb.rb
CHANGED
|
@@ -70,6 +70,18 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
|
|
|
70
70
|
repeated :nodes, :message, 2, "v1.Node"
|
|
71
71
|
optional :rate_limit, :message, 3, "v1.RateLimitMetadata"
|
|
72
72
|
end
|
|
73
|
+
add_message "v1.NodeTCPProbeRequest" do
|
|
74
|
+
optional :meta, :message, 1, "v1.CreateRequestMetadata"
|
|
75
|
+
optional :node_id, :string, 2
|
|
76
|
+
optional :host, :string, 3
|
|
77
|
+
optional :port, :int32, 4
|
|
78
|
+
end
|
|
79
|
+
add_message "v1.NodeTCPProbeResponse" do
|
|
80
|
+
optional :meta, :message, 1, "v1.CreateResponseMetadata"
|
|
81
|
+
optional :succeeded, :bool, 2
|
|
82
|
+
optional :error, :string, 3
|
|
83
|
+
optional :rate_limit, :message, 4, "v1.RateLimitMetadata"
|
|
84
|
+
end
|
|
73
85
|
add_message "v1.Node" do
|
|
74
86
|
oneof :node do
|
|
75
87
|
optional :relay, :message, 1, "v1.Relay"
|
|
@@ -139,6 +151,8 @@ module V1
|
|
|
139
151
|
NodeDeleteResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("v1.NodeDeleteResponse").msgclass
|
|
140
152
|
NodeListRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("v1.NodeListRequest").msgclass
|
|
141
153
|
NodeListResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("v1.NodeListResponse").msgclass
|
|
154
|
+
NodeTCPProbeRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("v1.NodeTCPProbeRequest").msgclass
|
|
155
|
+
NodeTCPProbeResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("v1.NodeTCPProbeResponse").msgclass
|
|
142
156
|
Node = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("v1.Node").msgclass
|
|
143
157
|
Relay = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("v1.Relay").msgclass
|
|
144
158
|
Gateway = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("v1.Gateway").msgclass
|
|
@@ -20,9 +20,11 @@ require "nodes_pb"
|
|
|
20
20
|
|
|
21
21
|
module V1
|
|
22
22
|
module Nodes
|
|
23
|
-
# Nodes make up the
|
|
24
|
-
#
|
|
25
|
-
#
|
|
23
|
+
# Nodes make up the StrongDM network, and allow your users to connect securely to your resources.
|
|
24
|
+
# There are three types of nodes:
|
|
25
|
+
# 1. **Relay:** creates connectivity to your datasources, while maintaining the egress-only nature of your firewall
|
|
26
|
+
# 2. **Gateway:** a relay that also listens for connections from StrongDM clients
|
|
27
|
+
# 3. **Proxy Cluster:** a cluster of workers that together mediate access from clients to resources
|
|
26
28
|
class Service
|
|
27
29
|
include ::GRPC::GenericService
|
|
28
30
|
|
|
@@ -40,6 +42,9 @@ module V1
|
|
|
40
42
|
rpc :Delete, ::V1::NodeDeleteRequest, ::V1::NodeDeleteResponse
|
|
41
43
|
# List gets a list of Nodes matching a given set of criteria.
|
|
42
44
|
rpc :List, ::V1::NodeListRequest, ::V1::NodeListResponse
|
|
45
|
+
# TCPProbe instructs a Node to connect to an address via TCP and report the
|
|
46
|
+
# result.
|
|
47
|
+
rpc :TCPProbe, ::V1::NodeTCPProbeRequest, ::V1::NodeTCPProbeResponse
|
|
43
48
|
end
|
|
44
49
|
|
|
45
50
|
Stub = Service.rpc_stub_class
|
data/lib/grpc/options_pb.rb
CHANGED
|
@@ -36,6 +36,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
|
|
|
36
36
|
optional :url, :string, 1941301
|
|
37
37
|
optional :deprecation_date, :string, 1941302
|
|
38
38
|
repeated :targets, :string, 1941401
|
|
39
|
+
optional :custom, :message, 1941305, "v1.CustomOptions"
|
|
39
40
|
end
|
|
40
41
|
add_message "v1.MessageOptions" do
|
|
41
42
|
optional :porcelain, :bool, 1941301
|
data/lib/grpc/plumbing.rb
CHANGED
|
@@ -6430,6 +6430,72 @@ module SDM
|
|
|
6430
6430
|
end
|
|
6431
6431
|
items
|
|
6432
6432
|
end
|
|
6433
|
+
def self.convert_elasticache_redis_iam_to_porcelain(plumbing)
|
|
6434
|
+
if plumbing == nil
|
|
6435
|
+
return nil
|
|
6436
|
+
end
|
|
6437
|
+
porcelain = ElasticacheRedisIAM.new()
|
|
6438
|
+
porcelain.bind_interface = (plumbing.bind_interface)
|
|
6439
|
+
porcelain.egress_filter = (plumbing.egress_filter)
|
|
6440
|
+
porcelain.healthy = (plumbing.healthy)
|
|
6441
|
+
porcelain.hostname = (plumbing.hostname)
|
|
6442
|
+
porcelain.id = (plumbing.id)
|
|
6443
|
+
porcelain.name = (plumbing.name)
|
|
6444
|
+
porcelain.port = (plumbing.port)
|
|
6445
|
+
porcelain.port_override = (plumbing.port_override)
|
|
6446
|
+
porcelain.proxy_cluster_id = (plumbing.proxy_cluster_id)
|
|
6447
|
+
porcelain.region = (plumbing.region)
|
|
6448
|
+
porcelain.role_assumption_arn = (plumbing.role_assumption_arn)
|
|
6449
|
+
porcelain.role_external_id = (plumbing.role_external_id)
|
|
6450
|
+
porcelain.secret_store_id = (plumbing.secret_store_id)
|
|
6451
|
+
porcelain.subdomain = (plumbing.subdomain)
|
|
6452
|
+
porcelain.tags = convert_tags_to_porcelain(plumbing.tags)
|
|
6453
|
+
porcelain.tls_required = (plumbing.tls_required)
|
|
6454
|
+
porcelain.username = (plumbing.username)
|
|
6455
|
+
porcelain
|
|
6456
|
+
end
|
|
6457
|
+
|
|
6458
|
+
def self.convert_elasticache_redis_iam_to_plumbing(porcelain)
|
|
6459
|
+
if porcelain == nil
|
|
6460
|
+
return nil
|
|
6461
|
+
end
|
|
6462
|
+
plumbing = V1::ElasticacheRedisIAM.new()
|
|
6463
|
+
plumbing.bind_interface = (porcelain.bind_interface)
|
|
6464
|
+
plumbing.egress_filter = (porcelain.egress_filter)
|
|
6465
|
+
plumbing.healthy = (porcelain.healthy)
|
|
6466
|
+
plumbing.hostname = (porcelain.hostname)
|
|
6467
|
+
plumbing.id = (porcelain.id)
|
|
6468
|
+
plumbing.name = (porcelain.name)
|
|
6469
|
+
plumbing.port = (porcelain.port)
|
|
6470
|
+
plumbing.port_override = (porcelain.port_override)
|
|
6471
|
+
plumbing.proxy_cluster_id = (porcelain.proxy_cluster_id)
|
|
6472
|
+
plumbing.region = (porcelain.region)
|
|
6473
|
+
plumbing.role_assumption_arn = (porcelain.role_assumption_arn)
|
|
6474
|
+
plumbing.role_external_id = (porcelain.role_external_id)
|
|
6475
|
+
plumbing.secret_store_id = (porcelain.secret_store_id)
|
|
6476
|
+
plumbing.subdomain = (porcelain.subdomain)
|
|
6477
|
+
plumbing.tags = convert_tags_to_plumbing(porcelain.tags)
|
|
6478
|
+
plumbing.tls_required = (porcelain.tls_required)
|
|
6479
|
+
plumbing.username = (porcelain.username)
|
|
6480
|
+
plumbing
|
|
6481
|
+
end
|
|
6482
|
+
def self.convert_repeated_elasticache_redis_iam_to_plumbing(porcelains)
|
|
6483
|
+
items = Array.new
|
|
6484
|
+
porcelains.each do |porcelain|
|
|
6485
|
+
plumbing = convert_elasticache_redis_iam_to_plumbing(porcelain)
|
|
6486
|
+
items.append(plumbing)
|
|
6487
|
+
end
|
|
6488
|
+
items
|
|
6489
|
+
end
|
|
6490
|
+
|
|
6491
|
+
def self.convert_repeated_elasticache_redis_iam_to_porcelain(plumbings)
|
|
6492
|
+
items = Array.new
|
|
6493
|
+
plumbings.each do |plumbing|
|
|
6494
|
+
porcelain = convert_elasticache_redis_iam_to_porcelain(plumbing)
|
|
6495
|
+
items.append(porcelain)
|
|
6496
|
+
end
|
|
6497
|
+
items
|
|
6498
|
+
end
|
|
6433
6499
|
def self.convert_entra_id_to_porcelain(plumbing)
|
|
6434
6500
|
if plumbing == nil
|
|
6435
6501
|
return nil
|
|
@@ -11519,6 +11585,46 @@ module SDM
|
|
|
11519
11585
|
end
|
|
11520
11586
|
items
|
|
11521
11587
|
end
|
|
11588
|
+
def self.convert_node_tcp_probe_response_to_porcelain(plumbing)
|
|
11589
|
+
if plumbing == nil
|
|
11590
|
+
return nil
|
|
11591
|
+
end
|
|
11592
|
+
porcelain = NodeTCPProbeResponse.new()
|
|
11593
|
+
porcelain.error = (plumbing.error)
|
|
11594
|
+
porcelain.meta = convert_create_response_metadata_to_porcelain(plumbing.meta)
|
|
11595
|
+
porcelain.rate_limit = convert_rate_limit_metadata_to_porcelain(plumbing.rate_limit)
|
|
11596
|
+
porcelain.succeeded = (plumbing.succeeded)
|
|
11597
|
+
porcelain
|
|
11598
|
+
end
|
|
11599
|
+
|
|
11600
|
+
def self.convert_node_tcp_probe_response_to_plumbing(porcelain)
|
|
11601
|
+
if porcelain == nil
|
|
11602
|
+
return nil
|
|
11603
|
+
end
|
|
11604
|
+
plumbing = V1::NodeTCPProbeResponse.new()
|
|
11605
|
+
plumbing.error = (porcelain.error)
|
|
11606
|
+
plumbing.meta = convert_create_response_metadata_to_plumbing(porcelain.meta)
|
|
11607
|
+
plumbing.rate_limit = convert_rate_limit_metadata_to_plumbing(porcelain.rate_limit)
|
|
11608
|
+
plumbing.succeeded = (porcelain.succeeded)
|
|
11609
|
+
plumbing
|
|
11610
|
+
end
|
|
11611
|
+
def self.convert_repeated_node_tcp_probe_response_to_plumbing(porcelains)
|
|
11612
|
+
items = Array.new
|
|
11613
|
+
porcelains.each do |porcelain|
|
|
11614
|
+
plumbing = convert_node_tcp_probe_response_to_plumbing(porcelain)
|
|
11615
|
+
items.append(plumbing)
|
|
11616
|
+
end
|
|
11617
|
+
items
|
|
11618
|
+
end
|
|
11619
|
+
|
|
11620
|
+
def self.convert_repeated_node_tcp_probe_response_to_porcelain(plumbings)
|
|
11621
|
+
items = Array.new
|
|
11622
|
+
plumbings.each do |plumbing|
|
|
11623
|
+
porcelain = convert_node_tcp_probe_response_to_porcelain(plumbing)
|
|
11624
|
+
items.append(porcelain)
|
|
11625
|
+
end
|
|
11626
|
+
items
|
|
11627
|
+
end
|
|
11522
11628
|
def self.convert_node_update_response_to_porcelain(plumbing)
|
|
11523
11629
|
if plumbing == nil
|
|
11524
11630
|
return nil
|
|
@@ -13226,6 +13332,8 @@ module SDM
|
|
|
13226
13332
|
porcelain.healthy = (plumbing.healthy)
|
|
13227
13333
|
porcelain.hostname = (plumbing.hostname)
|
|
13228
13334
|
porcelain.id = (plumbing.id)
|
|
13335
|
+
porcelain.identity_alias_healthcheck_username = (plumbing.identity_alias_healthcheck_username)
|
|
13336
|
+
porcelain.identity_set_id = (plumbing.identity_set_id)
|
|
13229
13337
|
porcelain.lock_required = (plumbing.lock_required)
|
|
13230
13338
|
porcelain.name = (plumbing.name)
|
|
13231
13339
|
porcelain.password = (plumbing.password)
|
|
@@ -13250,6 +13358,8 @@ module SDM
|
|
|
13250
13358
|
plumbing.healthy = (porcelain.healthy)
|
|
13251
13359
|
plumbing.hostname = (porcelain.hostname)
|
|
13252
13360
|
plumbing.id = (porcelain.id)
|
|
13361
|
+
plumbing.identity_alias_healthcheck_username = (porcelain.identity_alias_healthcheck_username)
|
|
13362
|
+
plumbing.identity_set_id = (porcelain.identity_set_id)
|
|
13253
13363
|
plumbing.lock_required = (porcelain.lock_required)
|
|
13254
13364
|
plumbing.name = (porcelain.name)
|
|
13255
13365
|
plumbing.password = (porcelain.password)
|
|
@@ -14563,6 +14673,9 @@ module SDM
|
|
|
14563
14673
|
if porcelain.instance_of? ElasticacheRedis
|
|
14564
14674
|
plumbing.elasticache_redis = convert_elasticache_redis_to_plumbing(porcelain)
|
|
14565
14675
|
end
|
|
14676
|
+
if porcelain.instance_of? ElasticacheRedisIAM
|
|
14677
|
+
plumbing.elasticache_redis_iam = convert_elasticache_redis_iam_to_plumbing(porcelain)
|
|
14678
|
+
end
|
|
14566
14679
|
if porcelain.instance_of? EntraID
|
|
14567
14680
|
plumbing.entra_id = convert_entra_id_to_plumbing(porcelain)
|
|
14568
14681
|
end
|
|
@@ -14900,6 +15013,9 @@ module SDM
|
|
|
14900
15013
|
if plumbing.elasticache_redis != nil
|
|
14901
15014
|
return convert_elasticache_redis_to_porcelain(plumbing.elasticache_redis)
|
|
14902
15015
|
end
|
|
15016
|
+
if plumbing.elasticache_redis_iam != nil
|
|
15017
|
+
return convert_elasticache_redis_iam_to_porcelain(plumbing.elasticache_redis_iam)
|
|
15018
|
+
end
|
|
14903
15019
|
if plumbing.entra_id != nil
|
|
14904
15020
|
return convert_entra_id_to_porcelain(plumbing.entra_id)
|
|
14905
15021
|
end
|
data/lib/models/porcelain.rb
CHANGED
|
@@ -6352,6 +6352,90 @@ module SDM
|
|
|
6352
6352
|
end
|
|
6353
6353
|
end
|
|
6354
6354
|
|
|
6355
|
+
# ElasticacheRedisIAM is currently unstable, and its API may change, or it may be removed, without a major version bump.
|
|
6356
|
+
class ElasticacheRedisIAM
|
|
6357
|
+
# The bind interface is the IP address to which the port override of a resource is bound (for example, 127.0.0.1). It is automatically generated if not provided and may also be set to one of the ResourceIPAllocationMode constants to select between VNM, loopback, or default allocation.
|
|
6358
|
+
attr_accessor :bind_interface
|
|
6359
|
+
# A filter applied to the routing logic to pin datasource to nodes.
|
|
6360
|
+
attr_accessor :egress_filter
|
|
6361
|
+
# True if the datasource is reachable and the credentials are valid.
|
|
6362
|
+
attr_accessor :healthy
|
|
6363
|
+
# The host to dial to initiate a connection from the egress node to this resource.
|
|
6364
|
+
attr_accessor :hostname
|
|
6365
|
+
# Unique identifier of the Resource.
|
|
6366
|
+
attr_accessor :id
|
|
6367
|
+
# Unique human-readable name of the Resource.
|
|
6368
|
+
attr_accessor :name
|
|
6369
|
+
# The port to dial to initiate a connection from the egress node to this resource.
|
|
6370
|
+
attr_accessor :port
|
|
6371
|
+
# The local port used by clients to connect to this resource. It is automatically generated if not provided on create and may be re-generated on update by specifying a value of -1.
|
|
6372
|
+
attr_accessor :port_override
|
|
6373
|
+
# ID of the proxy cluster for this resource, if any.
|
|
6374
|
+
attr_accessor :proxy_cluster_id
|
|
6375
|
+
# AWS region is needed in addition to hostname to generate the IAM signature
|
|
6376
|
+
attr_accessor :region
|
|
6377
|
+
# If provided, the gateway/relay will try to assume this role instead of the underlying compute's role.
|
|
6378
|
+
attr_accessor :role_assumption_arn
|
|
6379
|
+
# The external ID to associate with assume role requests. Does nothing if a role ARN is not provided.
|
|
6380
|
+
attr_accessor :role_external_id
|
|
6381
|
+
# ID of the secret store containing credentials for this resource, if any.
|
|
6382
|
+
attr_accessor :secret_store_id
|
|
6383
|
+
# DNS subdomain through which this resource may be accessed on clients. (e.g. "app-prod1" allows the resource to be accessed at "app-prod1.your-org-name.sdm-proxy-domain"). Only applicable to HTTP-based resources or resources using virtual networking mode.
|
|
6384
|
+
attr_accessor :subdomain
|
|
6385
|
+
# Tags is a map of key, value pairs.
|
|
6386
|
+
attr_accessor :tags
|
|
6387
|
+
# If set, TLS must be used to connect to this resource.
|
|
6388
|
+
attr_accessor :tls_required
|
|
6389
|
+
# The username to authenticate with.
|
|
6390
|
+
attr_accessor :username
|
|
6391
|
+
|
|
6392
|
+
def initialize(
|
|
6393
|
+
bind_interface: nil,
|
|
6394
|
+
egress_filter: nil,
|
|
6395
|
+
healthy: nil,
|
|
6396
|
+
hostname: nil,
|
|
6397
|
+
id: nil,
|
|
6398
|
+
name: nil,
|
|
6399
|
+
port: nil,
|
|
6400
|
+
port_override: nil,
|
|
6401
|
+
proxy_cluster_id: nil,
|
|
6402
|
+
region: nil,
|
|
6403
|
+
role_assumption_arn: nil,
|
|
6404
|
+
role_external_id: nil,
|
|
6405
|
+
secret_store_id: nil,
|
|
6406
|
+
subdomain: nil,
|
|
6407
|
+
tags: nil,
|
|
6408
|
+
tls_required: nil,
|
|
6409
|
+
username: nil
|
|
6410
|
+
)
|
|
6411
|
+
@bind_interface = bind_interface == nil ? "" : bind_interface
|
|
6412
|
+
@egress_filter = egress_filter == nil ? "" : egress_filter
|
|
6413
|
+
@healthy = healthy == nil ? false : healthy
|
|
6414
|
+
@hostname = hostname == nil ? "" : hostname
|
|
6415
|
+
@id = id == nil ? "" : id
|
|
6416
|
+
@name = name == nil ? "" : name
|
|
6417
|
+
@port = port == nil ? 0 : port
|
|
6418
|
+
@port_override = port_override == nil ? 0 : port_override
|
|
6419
|
+
@proxy_cluster_id = proxy_cluster_id == nil ? "" : proxy_cluster_id
|
|
6420
|
+
@region = region == nil ? "" : region
|
|
6421
|
+
@role_assumption_arn = role_assumption_arn == nil ? "" : role_assumption_arn
|
|
6422
|
+
@role_external_id = role_external_id == nil ? "" : role_external_id
|
|
6423
|
+
@secret_store_id = secret_store_id == nil ? "" : secret_store_id
|
|
6424
|
+
@subdomain = subdomain == nil ? "" : subdomain
|
|
6425
|
+
@tags = tags == nil ? SDM::_porcelain_zero_value_tags() : tags
|
|
6426
|
+
@tls_required = tls_required == nil ? false : tls_required
|
|
6427
|
+
@username = username == nil ? "" : username
|
|
6428
|
+
end
|
|
6429
|
+
|
|
6430
|
+
def to_json(options = {})
|
|
6431
|
+
hash = {}
|
|
6432
|
+
self.instance_variables.each do |var|
|
|
6433
|
+
hash[var.id2name.delete_prefix("@")] = self.instance_variable_get var
|
|
6434
|
+
end
|
|
6435
|
+
hash.to_json
|
|
6436
|
+
end
|
|
6437
|
+
end
|
|
6438
|
+
|
|
6355
6439
|
class EntraID
|
|
6356
6440
|
# The bind interface is the IP address to which the port override of a resource is bound (for example, 127.0.0.1). It is automatically generated if not provided and may also be set to one of the ResourceIPAllocationMode constants to select between VNM, loopback, or default allocation.
|
|
6357
6441
|
attr_accessor :bind_interface
|
|
@@ -11091,6 +11175,38 @@ module SDM
|
|
|
11091
11175
|
end
|
|
11092
11176
|
end
|
|
11093
11177
|
|
|
11178
|
+
# NodeTCPProbeResponse reports the result of a TCP probe.
|
|
11179
|
+
class NodeTCPProbeResponse
|
|
11180
|
+
# The connection error reported by the node, or the empty string if the probe succeeded.
|
|
11181
|
+
attr_accessor :error
|
|
11182
|
+
# Reserved for future use.
|
|
11183
|
+
attr_accessor :meta
|
|
11184
|
+
# Rate limit information.
|
|
11185
|
+
attr_accessor :rate_limit
|
|
11186
|
+
# True if the node was able to connect to the target address.
|
|
11187
|
+
attr_accessor :succeeded
|
|
11188
|
+
|
|
11189
|
+
def initialize(
|
|
11190
|
+
error: nil,
|
|
11191
|
+
meta: nil,
|
|
11192
|
+
rate_limit: nil,
|
|
11193
|
+
succeeded: nil
|
|
11194
|
+
)
|
|
11195
|
+
@error = error == nil ? "" : error
|
|
11196
|
+
@meta = meta == nil ? nil : meta
|
|
11197
|
+
@rate_limit = rate_limit == nil ? nil : rate_limit
|
|
11198
|
+
@succeeded = succeeded == nil ? false : succeeded
|
|
11199
|
+
end
|
|
11200
|
+
|
|
11201
|
+
def to_json(options = {})
|
|
11202
|
+
hash = {}
|
|
11203
|
+
self.instance_variables.each do |var|
|
|
11204
|
+
hash[var.id2name.delete_prefix("@")] = self.instance_variable_get var
|
|
11205
|
+
end
|
|
11206
|
+
hash.to_json
|
|
11207
|
+
end
|
|
11208
|
+
end
|
|
11209
|
+
|
|
11094
11210
|
# NodeUpdateResponse returns the fields of a Node after it has been updated by
|
|
11095
11211
|
# a NodeUpdateRequest.
|
|
11096
11212
|
class NodeUpdateResponse
|
|
@@ -12718,6 +12834,10 @@ module SDM
|
|
|
12718
12834
|
attr_accessor :hostname
|
|
12719
12835
|
# Unique identifier of the Resource.
|
|
12720
12836
|
attr_accessor :id
|
|
12837
|
+
# The username to use for healthchecks, when clients otherwise connect with their own identity alias username.
|
|
12838
|
+
attr_accessor :identity_alias_healthcheck_username
|
|
12839
|
+
# if provided use identity_set to map username to secret store path
|
|
12840
|
+
attr_accessor :identity_set_id
|
|
12721
12841
|
# When set, require a resource lock to access the resource to ensure it can only be used by one user at a time.
|
|
12722
12842
|
attr_accessor :lock_required
|
|
12723
12843
|
# Unique human-readable name of the Resource.
|
|
@@ -12746,6 +12866,8 @@ module SDM
|
|
|
12746
12866
|
healthy: nil,
|
|
12747
12867
|
hostname: nil,
|
|
12748
12868
|
id: nil,
|
|
12869
|
+
identity_alias_healthcheck_username: nil,
|
|
12870
|
+
identity_set_id: nil,
|
|
12749
12871
|
lock_required: nil,
|
|
12750
12872
|
name: nil,
|
|
12751
12873
|
password: nil,
|
|
@@ -12763,6 +12885,8 @@ module SDM
|
|
|
12763
12885
|
@healthy = healthy == nil ? false : healthy
|
|
12764
12886
|
@hostname = hostname == nil ? "" : hostname
|
|
12765
12887
|
@id = id == nil ? "" : id
|
|
12888
|
+
@identity_alias_healthcheck_username = identity_alias_healthcheck_username == nil ? "" : identity_alias_healthcheck_username
|
|
12889
|
+
@identity_set_id = identity_set_id == nil ? "" : identity_set_id
|
|
12766
12890
|
@lock_required = lock_required == nil ? false : lock_required
|
|
12767
12891
|
@name = name == nil ? "" : name
|
|
12768
12892
|
@password = password == nil ? "" : password
|
data/lib/strongdm.rb
CHANGED
|
@@ -30,7 +30,7 @@ module SDM #:nodoc:
|
|
|
30
30
|
DEFAULT_RETRY_FACTOR = 1.6
|
|
31
31
|
DEFAULT_RETRY_JITTER = 0.2
|
|
32
32
|
API_VERSION = "2025-04-14"
|
|
33
|
-
USER_AGENT = "strongdm-sdk-ruby/15.
|
|
33
|
+
USER_AGENT = "strongdm-sdk-ruby/15.28.0"
|
|
34
34
|
private_constant :DEFAULT_BASE_RETRY_DELAY, :DEFAULT_MAX_RETRY_DELAY, :DEFAULT_RETRY_FACTOR, :DEFAULT_RETRY_JITTER, :API_VERSION, :USER_AGENT
|
|
35
35
|
|
|
36
36
|
# Creates a new strongDM API client.
|
|
@@ -380,9 +380,11 @@ module SDM #:nodoc:
|
|
|
380
380
|
#
|
|
381
381
|
# See {ManagedSecrets}.
|
|
382
382
|
attr_reader :managed_secrets
|
|
383
|
-
# Nodes make up the
|
|
384
|
-
#
|
|
385
|
-
#
|
|
383
|
+
# Nodes make up the StrongDM network, and allow your users to connect securely to your resources.
|
|
384
|
+
# There are three types of nodes:
|
|
385
|
+
# 1. **Relay:** creates connectivity to your datasources, while maintaining the egress-only nature of your firewall
|
|
386
|
+
# 2. **Gateway:** a relay that also listens for connections from StrongDM clients
|
|
387
|
+
# 3. **Proxy Cluster:** a cluster of workers that together mediate access from clients to resources
|
|
386
388
|
#
|
|
387
389
|
# See {Nodes}.
|
|
388
390
|
attr_reader :nodes
|
|
@@ -694,9 +696,11 @@ module SDM #:nodoc:
|
|
|
694
696
|
#
|
|
695
697
|
# See {SnapshotIdentitySets}.
|
|
696
698
|
attr_reader :identity_sets
|
|
697
|
-
# Nodes make up the
|
|
698
|
-
#
|
|
699
|
-
#
|
|
699
|
+
# Nodes make up the StrongDM network, and allow your users to connect securely to your resources.
|
|
700
|
+
# There are three types of nodes:
|
|
701
|
+
# 1. **Relay:** creates connectivity to your datasources, while maintaining the egress-only nature of your firewall
|
|
702
|
+
# 2. **Gateway:** a relay that also listens for connections from StrongDM clients
|
|
703
|
+
# 3. **Proxy Cluster:** a cluster of workers that together mediate access from clients to resources
|
|
700
704
|
#
|
|
701
705
|
# See {SnapshotNodes}.
|
|
702
706
|
attr_reader :nodes
|
data/lib/svc.rb
CHANGED
|
@@ -4061,9 +4061,11 @@ module SDM #:nodoc:
|
|
|
4061
4061
|
end
|
|
4062
4062
|
end
|
|
4063
4063
|
|
|
4064
|
-
# Nodes make up the
|
|
4065
|
-
#
|
|
4066
|
-
#
|
|
4064
|
+
# Nodes make up the StrongDM network, and allow your users to connect securely to your resources.
|
|
4065
|
+
# There are three types of nodes:
|
|
4066
|
+
# 1. **Relay:** creates connectivity to your datasources, while maintaining the egress-only nature of your firewall
|
|
4067
|
+
# 2. **Gateway:** a relay that also listens for connections from StrongDM clients
|
|
4068
|
+
# 3. **Proxy Cluster:** a cluster of workers that together mediate access from clients to resources
|
|
4067
4069
|
#
|
|
4068
4070
|
# See:
|
|
4069
4071
|
# {Gateway}
|
|
@@ -4243,6 +4245,42 @@ module SDM #:nodoc:
|
|
|
4243
4245
|
}
|
|
4244
4246
|
resp
|
|
4245
4247
|
end
|
|
4248
|
+
|
|
4249
|
+
# TCPProbe instructs a Node to connect to an address via TCP and report the
|
|
4250
|
+
# result.
|
|
4251
|
+
def tcp_probe(
|
|
4252
|
+
node_id,
|
|
4253
|
+
host,
|
|
4254
|
+
port,
|
|
4255
|
+
deadline: nil
|
|
4256
|
+
)
|
|
4257
|
+
req = V1::NodeTCPProbeRequest.new()
|
|
4258
|
+
|
|
4259
|
+
req.node_id = (node_id)
|
|
4260
|
+
req.host = (host)
|
|
4261
|
+
req.port = (port)
|
|
4262
|
+
tries = 0
|
|
4263
|
+
plumbing_response = nil
|
|
4264
|
+
loop do
|
|
4265
|
+
begin
|
|
4266
|
+
plumbing_response = @stub.tcp_probe(req, metadata: @parent.get_metadata("Nodes.TCPProbe", req), deadline: deadline)
|
|
4267
|
+
rescue => exception
|
|
4268
|
+
if (@parent.shouldRetry(tries, exception, deadline))
|
|
4269
|
+
tries + +sleep(@parent.exponentialBackoff(tries, deadline))
|
|
4270
|
+
next
|
|
4271
|
+
end
|
|
4272
|
+
raise Plumbing::convert_error_to_porcelain(exception)
|
|
4273
|
+
end
|
|
4274
|
+
break
|
|
4275
|
+
end
|
|
4276
|
+
|
|
4277
|
+
resp = NodeTCPProbeResponse.new()
|
|
4278
|
+
resp.error = (plumbing_response.error)
|
|
4279
|
+
resp.meta = Plumbing::convert_create_response_metadata_to_porcelain(plumbing_response.meta)
|
|
4280
|
+
resp.rate_limit = Plumbing::convert_rate_limit_metadata_to_porcelain(plumbing_response.rate_limit)
|
|
4281
|
+
resp.succeeded = (plumbing_response.succeeded)
|
|
4282
|
+
resp
|
|
4283
|
+
end
|
|
4246
4284
|
end
|
|
4247
4285
|
|
|
4248
4286
|
# SnapshotNodes exposes the read only methods of the Nodes
|
|
@@ -6045,6 +6083,7 @@ module SDM #:nodoc:
|
|
|
6045
6083
|
# {DynamoDBIAM}
|
|
6046
6084
|
# {Elastic}
|
|
6047
6085
|
# {ElasticacheRedis}
|
|
6086
|
+
# {ElasticacheRedisIAM}
|
|
6048
6087
|
# {EntraID}
|
|
6049
6088
|
# {GCP}
|
|
6050
6089
|
# {GCPConsole}
|
data/lib/version
CHANGED
data/lib/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: strongdm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 15.
|
|
4
|
+
version: 15.28.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- strongDM Team
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-10
|
|
11
|
+
date: 2025-11-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: grpc
|
|
@@ -81,8 +81,8 @@ files:
|
|
|
81
81
|
- "./.git/logs/HEAD"
|
|
82
82
|
- "./.git/logs/refs/heads/master"
|
|
83
83
|
- "./.git/logs/refs/remotes/origin/HEAD"
|
|
84
|
-
- "./.git/objects/pack/pack-
|
|
85
|
-
- "./.git/objects/pack/pack-
|
|
84
|
+
- "./.git/objects/pack/pack-57422f9648cd00a4b26afeacb8a0ba4bd5eb4b5b.idx"
|
|
85
|
+
- "./.git/objects/pack/pack-57422f9648cd00a4b26afeacb8a0ba4bd5eb4b5b.pack"
|
|
86
86
|
- "./.git/packed-refs"
|
|
87
87
|
- "./.git/refs/heads/master"
|
|
88
88
|
- "./.git/refs/remotes/origin/HEAD"
|