strongdm 15.40.0__tar.gz → 15.43.0__tar.gz

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.
Files changed (161) hide show
  1. {strongdm-15.40.0 → strongdm-15.43.0}/PKG-INFO +2 -2
  2. {strongdm-15.40.0 → strongdm-15.43.0}/setup.py +4 -4
  3. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/access_requests_pb2.py +28 -12
  4. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/client.py +132 -1
  5. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/constants.py +1 -0
  6. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/drivers_pb2.py +32 -24
  7. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/models.py +36 -0
  8. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/plumbing.py +8 -0
  9. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm.egg-info/PKG-INFO +2 -2
  10. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm.egg-info/requires.txt +1 -0
  11. {strongdm-15.40.0 → strongdm-15.43.0}/LICENSE +0 -0
  12. {strongdm-15.40.0 → strongdm-15.43.0}/README.md +0 -0
  13. {strongdm-15.40.0 → strongdm-15.43.0}/setup.cfg +0 -0
  14. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/__init__.py +0 -0
  15. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/access_request_events_history_pb2.py +0 -0
  16. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/access_request_events_history_pb2_grpc.py +0 -0
  17. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/access_requests_history_pb2.py +0 -0
  18. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/access_requests_history_pb2_grpc.py +0 -0
  19. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/access_requests_pb2_grpc.py +0 -0
  20. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/account_attachments_history_pb2.py +0 -0
  21. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/account_attachments_history_pb2_grpc.py +0 -0
  22. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/account_attachments_pb2.py +0 -0
  23. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/account_attachments_pb2_grpc.py +0 -0
  24. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/account_grants_history_pb2.py +0 -0
  25. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/account_grants_history_pb2_grpc.py +0 -0
  26. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/account_grants_pb2.py +0 -0
  27. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/account_grants_pb2_grpc.py +0 -0
  28. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/account_permissions_pb2.py +0 -0
  29. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/account_permissions_pb2_grpc.py +0 -0
  30. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/account_resources_history_pb2.py +0 -0
  31. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/account_resources_history_pb2_grpc.py +0 -0
  32. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/account_resources_pb2.py +0 -0
  33. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/account_resources_pb2_grpc.py +0 -0
  34. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/accounts_groups_history_pb2.py +0 -0
  35. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/accounts_groups_history_pb2_grpc.py +0 -0
  36. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/accounts_groups_pb2.py +0 -0
  37. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/accounts_groups_pb2_grpc.py +0 -0
  38. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/accounts_history_pb2.py +0 -0
  39. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/accounts_history_pb2_grpc.py +0 -0
  40. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/accounts_pb2.py +0 -0
  41. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/accounts_pb2_grpc.py +0 -0
  42. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/activities_pb2.py +0 -0
  43. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/activities_pb2_grpc.py +0 -0
  44. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/approval_workflow_approvers_history_pb2.py +0 -0
  45. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/approval_workflow_approvers_history_pb2_grpc.py +0 -0
  46. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/approval_workflow_approvers_pb2.py +0 -0
  47. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/approval_workflow_approvers_pb2_grpc.py +0 -0
  48. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/approval_workflow_steps_history_pb2.py +0 -0
  49. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/approval_workflow_steps_history_pb2_grpc.py +0 -0
  50. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/approval_workflow_steps_pb2.py +0 -0
  51. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/approval_workflow_steps_pb2_grpc.py +0 -0
  52. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/approval_workflows_history_pb2.py +0 -0
  53. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/approval_workflows_history_pb2_grpc.py +0 -0
  54. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/approval_workflows_pb2.py +0 -0
  55. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/approval_workflows_pb2_grpc.py +0 -0
  56. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/control_panel_pb2.py +0 -0
  57. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/control_panel_pb2_grpc.py +0 -0
  58. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/discovery_connectors_pb2.py +0 -0
  59. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/discovery_connectors_pb2_grpc.py +0 -0
  60. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/drivers_pb2_grpc.py +0 -0
  61. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/errors.py +0 -0
  62. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/groups_history_pb2.py +0 -0
  63. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/groups_history_pb2_grpc.py +0 -0
  64. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/groups_pb2.py +0 -0
  65. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/groups_pb2_grpc.py +0 -0
  66. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/groups_roles_history_pb2.py +0 -0
  67. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/groups_roles_history_pb2_grpc.py +0 -0
  68. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/groups_roles_pb2.py +0 -0
  69. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/groups_roles_pb2_grpc.py +0 -0
  70. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/health_checks_pb2.py +0 -0
  71. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/health_checks_pb2_grpc.py +0 -0
  72. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/identity_aliases_history_pb2.py +0 -0
  73. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/identity_aliases_history_pb2_grpc.py +0 -0
  74. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/identity_aliases_pb2.py +0 -0
  75. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/identity_aliases_pb2_grpc.py +0 -0
  76. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/identity_sets_history_pb2.py +0 -0
  77. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/identity_sets_history_pb2_grpc.py +0 -0
  78. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/identity_sets_pb2.py +0 -0
  79. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/identity_sets_pb2_grpc.py +0 -0
  80. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/managed_secrets_pb2.py +0 -0
  81. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/managed_secrets_pb2_grpc.py +0 -0
  82. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/nodes_history_pb2.py +0 -0
  83. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/nodes_history_pb2_grpc.py +0 -0
  84. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/nodes_pb2.py +0 -0
  85. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/nodes_pb2_grpc.py +0 -0
  86. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/options_pb2.py +0 -0
  87. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/options_pb2_grpc.py +0 -0
  88. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/organization_history_pb2.py +0 -0
  89. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/organization_history_pb2_grpc.py +0 -0
  90. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/peering_group_nodes_pb2.py +0 -0
  91. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/peering_group_nodes_pb2_grpc.py +0 -0
  92. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/peering_group_peers_pb2.py +0 -0
  93. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/peering_group_peers_pb2_grpc.py +0 -0
  94. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/peering_group_resources_pb2.py +0 -0
  95. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/peering_group_resources_pb2_grpc.py +0 -0
  96. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/peering_groups_pb2.py +0 -0
  97. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/peering_groups_pb2_grpc.py +0 -0
  98. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/policies_history_pb2.py +0 -0
  99. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/policies_history_pb2_grpc.py +0 -0
  100. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/policies_pb2.py +0 -0
  101. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/policies_pb2_grpc.py +0 -0
  102. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/proxy_cluster_keys_pb2.py +0 -0
  103. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/proxy_cluster_keys_pb2_grpc.py +0 -0
  104. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/queries_pb2.py +0 -0
  105. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/queries_pb2_grpc.py +0 -0
  106. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/remote_identities_history_pb2.py +0 -0
  107. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/remote_identities_history_pb2_grpc.py +0 -0
  108. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/remote_identities_pb2.py +0 -0
  109. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/remote_identities_pb2_grpc.py +0 -0
  110. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/remote_identity_groups_history_pb2.py +0 -0
  111. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/remote_identity_groups_history_pb2_grpc.py +0 -0
  112. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/remote_identity_groups_pb2.py +0 -0
  113. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/remote_identity_groups_pb2_grpc.py +0 -0
  114. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/replays_pb2.py +0 -0
  115. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/replays_pb2_grpc.py +0 -0
  116. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/resources_history_pb2.py +0 -0
  117. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/resources_history_pb2_grpc.py +0 -0
  118. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/resources_pb2.py +0 -0
  119. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/resources_pb2_grpc.py +0 -0
  120. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/role_resources_history_pb2.py +0 -0
  121. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/role_resources_history_pb2_grpc.py +0 -0
  122. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/role_resources_pb2.py +0 -0
  123. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/role_resources_pb2_grpc.py +0 -0
  124. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/roles_history_pb2.py +0 -0
  125. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/roles_history_pb2_grpc.py +0 -0
  126. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/roles_pb2.py +0 -0
  127. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/roles_pb2_grpc.py +0 -0
  128. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/secret_engine_policy_pb2.py +0 -0
  129. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/secret_engine_policy_pb2_grpc.py +0 -0
  130. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/secret_engine_types_pb2.py +0 -0
  131. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/secret_engine_types_pb2_grpc.py +0 -0
  132. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/secret_engines_pb2.py +0 -0
  133. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/secret_engines_pb2_grpc.py +0 -0
  134. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/secret_store_healths_pb2.py +0 -0
  135. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/secret_store_healths_pb2_grpc.py +0 -0
  136. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/secret_store_types_pb2.py +0 -0
  137. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/secret_store_types_pb2_grpc.py +0 -0
  138. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/secret_stores_history_pb2.py +0 -0
  139. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/secret_stores_history_pb2_grpc.py +0 -0
  140. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/secret_stores_pb2.py +0 -0
  141. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/secret_stores_pb2_grpc.py +0 -0
  142. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/spec_pb2.py +0 -0
  143. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/spec_pb2_grpc.py +0 -0
  144. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/svc.py +0 -0
  145. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/tags_pb2.py +0 -0
  146. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/tags_pb2_grpc.py +0 -0
  147. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/workflow_approvers_history_pb2.py +0 -0
  148. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/workflow_approvers_history_pb2_grpc.py +0 -0
  149. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/workflow_approvers_pb2.py +0 -0
  150. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/workflow_approvers_pb2_grpc.py +0 -0
  151. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/workflow_roles_history_pb2.py +0 -0
  152. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/workflow_roles_history_pb2_grpc.py +0 -0
  153. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/workflow_roles_pb2.py +0 -0
  154. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/workflow_roles_pb2_grpc.py +0 -0
  155. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/workflows_history_pb2.py +0 -0
  156. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/workflows_history_pb2_grpc.py +0 -0
  157. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/workflows_pb2.py +0 -0
  158. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm/workflows_pb2_grpc.py +0 -0
  159. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm.egg-info/SOURCES.txt +0 -0
  160. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm.egg-info/dependency_links.txt +0 -0
  161. {strongdm-15.40.0 → strongdm-15.43.0}/strongdm.egg-info/top_level.txt +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: strongdm
3
- Version: 15.40.0
3
+ Version: 15.43.0
4
4
  Summary: strongDM SDK for the Python programming language.
5
5
  Home-page: https://github.com/strongdm/strongdm-sdk-python
6
6
  Author: strongDM Team
7
7
  Author-email: sdk-feedback@strongdm.com
8
8
  License: apache-2.0
9
- Download-URL: https://github.com/strongdm/strongdm-sdk-python/archive/v15.40.0.tar.gz
9
+ Download-URL: https://github.com/strongdm/strongdm-sdk-python/archive/v15.43.0.tar.gz
10
10
  Keywords: strongDM,sdm,api,automation,security,audit,database,server,ssh,rdp
11
11
  Platform: UNKNOWN
12
12
  Classifier: Development Status :: 4 - Beta
@@ -23,7 +23,7 @@ from setuptools import setup
23
23
  setup(
24
24
  name='strongdm',
25
25
  packages=['strongdm'],
26
- version='15.40.0',
26
+ version='15.43.0',
27
27
  license='apache-2.0',
28
28
  description='strongDM SDK for the Python programming language.',
29
29
  long_description=long_description,
@@ -32,14 +32,14 @@ setup(
32
32
  author_email='sdk-feedback@strongdm.com',
33
33
  url='https://github.com/strongdm/strongdm-sdk-python',
34
34
  download_url=
35
- 'https://github.com/strongdm/strongdm-sdk-python/archive/v15.40.0.tar.gz',
35
+ 'https://github.com/strongdm/strongdm-sdk-python/archive/v15.43.0.tar.gz',
36
36
  keywords=[
37
37
  'strongDM', 'sdm', 'api', 'automation', 'security', 'audit',
38
38
  'database', 'server', 'ssh', 'rdp'
39
39
  ],
40
40
  install_requires=[
41
- 'grpcio>=1.42.0',
42
- 'googleapis-common-protos>1.56.2,<2',
41
+ 'grpcio >= 1.42.0', 'googleapis-common-protos>1.56.2,<2',
42
+ 'cryptography >= 46.0.0'
43
43
  ],
44
44
  classifiers=[
45
45
  'Development Status :: 4 - Beta', # Chose either "3 - Alpha", "4 - Beta" or "5 - Production/Stable" as the current state of your package
@@ -33,7 +33,7 @@ from . import spec_pb2 as spec__pb2
33
33
  from . import tags_pb2 as tags__pb2
34
34
 
35
35
 
36
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x61\x63\x63\x65ss_requests.proto\x12\x02v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\roptions.proto\x1a\nspec.proto\x1a\ntags.proto\"i\n\x18\x41\x63\x63\x65ssRequestListRequest\x12%\n\x04meta\x18\x01 \x01(\x0b\x32\x17.v1.ListRequestMetadata\x12\x1a\n\x06\x66ilter\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"\xc9\x01\n\x19\x41\x63\x63\x65ssRequestListResponse\x12&\n\x04meta\x18\x01 \x01(\x0b\x32\x18.v1.ListResponseMetadata\x12\x36\n\x0f\x61\x63\x63\x65ss_requests\x18\x02 \x03(\x0b\x32\x11.v1.AccessRequestB\n\xf2\xf8\xb3\x07\x05\xb8\xf3\xb3\x07\x01\x12@\n\nrate_limit\x18\x03 \x01(\x0b\x32\x15.v1.RateLimitMetadataB\x15\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\xf2\xf8\xb3\x07\x06\xb2\xf4\xb3\x07\x01*:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"\x83\x05\n\rAccessRequest\x12\x16\n\x02id\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12$\n\x0bresource_id\x18\x02 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1a\n\x06reason\x18\x03 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1f\n\x0bworkflow_id\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1e\n\naccount_id\x18\x05 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12:\n\nstart_from\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12@\n\x0bvalid_until\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1a\n\x06status\x18\x08 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x39\n\tstatus_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08grant_id\x18\n \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1e\n\x08\x64uration\x18\x0b \x01(\x03\x42\x0c\x18\x01\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12@\n\x11requestedDuration\x18\r \x01(\x0b\x32\x19.google.protobuf.DurationB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12=\n\x0eresultDuration\x18\x0e \x01(\x0b\x32\x19.google.protobuf.DurationB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x31\n\x0erequester_name\x18\x0c \x01(\tB\x19\xf2\xf8\xb3\x07\x14\xb0\xf3\xb3\x07\x01\xb2\xf4\xb3\x07\ngo_private:\x10\xfa\xf8\xb3\x07\x0b\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\"\xf9\x01\n\x12\x41\x63\x63\x65ssRequestEvent\x12\x16\n\x02id\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1e\n\nrequest_id\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08\x61\x63tor_id\x18\x03 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x18\n\x04type\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08metadata\x18\x05 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x43\n\x04time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x19\xf2\xf8\xb3\x07\x14\xb0\xf3\xb3\x07\x01\xb2\xf4\xb3\x07\ngo_private:\x10\xfa\xf8\xb3\x07\x0b\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\"\xfc\x02\n\x13RequestableResource\x12\x16\n\x02id\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x18\n\x04name\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1b\n\x07healthy\x18\x03 \x01(\x08\x42\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x18\n\x04type\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\"\n\x0e\x61uthentication\x18\x05 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\"\n\x04tags\x18\x06 \x01(\x0b\x32\x08.v1.TagsB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1a\n\x06\x61\x63\x63\x65ss\x18\x07 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x44\n\nprivileges\x18\x08 \x01(\x0b\x32\x15.v1.PrivilegesMessageB\x19\xf2\xf8\xb3\x07\x14\xb0\xf3\xb3\x07\x01\xb2\xf4\xb3\x07\ngo_private\x12@\n\x1dprivileges_requirement_status\x18\t \x01(\tB\x19\xf2\xf8\xb3\x07\x14\xb0\xf3\xb3\x07\x01\xb2\xf4\xb3\x07\ngo_private:\x10\xfa\xf8\xb3\x07\x0b\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\"\xa3\x01\n\x11PrivilegesMessage\x12\x38\n\nkubernetes\x18\x01 \x01(\x0b\x32\x18.v1.KubernetesPrivilegesB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x39\n\x0b\x65ntraGroups\x18\x02 \x01(\x0b\x32\x18.v1.EntraGroupPrivilegesB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x19\xfa\xf8\xb3\x07\x14\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\ngo_private\"M\n\x14KubernetesPrivileges\x12\x1a\n\x06groups\x18\x01 \x03(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x19\xfa\xf8\xb3\x07\x14\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\ngo_private\"M\n\x14\x45ntraGroupPrivileges\x12\x1a\n\x06groups\x18\x01 \x03(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x19\xfa\xf8\xb3\x07\x14\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\ngo_private\"\xc3\x01\n\x13\x41\x63\x63\x65ssRequestConfig\x12$\n\x0bresource_id\x18\x01 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1a\n\x06reason\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12:\n\nstart_from\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08\x64uration\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x10\xfa\xf8\xb3\x07\x0b\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\"\xcb\x03\n\x1aRequestAccessRequestConfig\x12\'\n\x0cresource_ids\x18\x01 \x03(\tB\x11\x18\x01\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1a\n\x06reason\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12:\n\nstart_from\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08\x64uration\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\xf2\x01\n\x0c\x61\x63\x63\x65ss_rules\x18\x05 \x01(\tB\xdb\x01\xf2\xf8\xb3\x07\xd5\x01\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\xa9\x01\xea\xf3\xb3\x07\x0c\x61\x63\x63\x65ss_rules\xf2\xf3\xb3\x07\x11\n\x02go\x12\x0b\x41\x63\x63\x65ssRules\xf2\xf3\xb3\x07\x19\n\ngo_private\x12\x0b\x41\x63\x63\x65ssRules\xf2\xf3\xb3\x07\x1b\n\x0cgo_terraform\x12\x0b\x41\x63\x63\x65ssRules\xf2\xf3\xb3\x07\x18\n\x04java\x12\x10List<AccessRule>\xf2\xf3\xb3\x07\"\n\x0cjson_gateway\x12\x12models.AccessRules\xba\xf4\xb3\x07\x17\x61\x63\x63\x65ssRulesDiffSuppress\xd0\xf4\xb3\x07\x01:\x19\xfa\xf8\xb3\x07\x14\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\ngo_private2\xd9\x01\n\x0e\x41\x63\x63\x65ssRequests\x12o\n\x04List\x12\x1c.v1.AccessRequestListRequest\x1a\x1d.v1.AccessRequestListResponse\"*\x82\xf9\xb3\x07\x08\xa2\xf3\xb3\x07\x03get\x82\xf9\xb3\x07\x18\xaa\xf3\xb3\x07\x13/v1/access-requests\x1aV\xca\xf9\xb3\x07\x12\xc2\xf9\xb3\x07\rAccessRequest\xca\xf9\xb3\x07\x08\xd2\xf9\xb3\x07\x03\x61q-\xca\xf9\xb3\x07\x06\xca\xf9\xb3\x07\x01*\xca\xf9\xb3\x07\x18\xca\xf9\xb3\x07\x13!terraform-provider\xca\xf9\xb3\x07\x05\xe8\xf9\xb3\x07\x01\x42\x92\x01\n\x19\x63om.strongdm.api.plumbingB\x16\x41\x63\x63\x65ssRequestsPlumbingZ5github.com/strongdm/strongdm-sdk-go/v3/internal/v1;v1\xc2\x92\xb4\x07\x06\xa2\x8c\xb4\x07\x01*\xc2\x92\xb4\x07\x18\xa2\x8c\xb4\x07\x13!terraform-providerb\x06proto3')
36
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x61\x63\x63\x65ss_requests.proto\x12\x02v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\roptions.proto\x1a\nspec.proto\x1a\ntags.proto\"i\n\x18\x41\x63\x63\x65ssRequestListRequest\x12%\n\x04meta\x18\x01 \x01(\x0b\x32\x17.v1.ListRequestMetadata\x12\x1a\n\x06\x66ilter\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"\xc9\x01\n\x19\x41\x63\x63\x65ssRequestListResponse\x12&\n\x04meta\x18\x01 \x01(\x0b\x32\x18.v1.ListResponseMetadata\x12\x36\n\x0f\x61\x63\x63\x65ss_requests\x18\x02 \x03(\x0b\x32\x11.v1.AccessRequestB\n\xf2\xf8\xb3\x07\x05\xb8\xf3\xb3\x07\x01\x12@\n\nrate_limit\x18\x03 \x01(\x0b\x32\x15.v1.RateLimitMetadataB\x15\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\xf2\xf8\xb3\x07\x06\xb2\xf4\xb3\x07\x01*:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"\x83\x05\n\rAccessRequest\x12\x16\n\x02id\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12$\n\x0bresource_id\x18\x02 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1a\n\x06reason\x18\x03 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1f\n\x0bworkflow_id\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1e\n\naccount_id\x18\x05 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12:\n\nstart_from\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12@\n\x0bvalid_until\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1a\n\x06status\x18\x08 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x39\n\tstatus_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08grant_id\x18\n \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1e\n\x08\x64uration\x18\x0b \x01(\x03\x42\x0c\x18\x01\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12@\n\x11requestedDuration\x18\r \x01(\x0b\x32\x19.google.protobuf.DurationB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12=\n\x0eresultDuration\x18\x0e \x01(\x0b\x32\x19.google.protobuf.DurationB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x31\n\x0erequester_name\x18\x0c \x01(\tB\x19\xf2\xf8\xb3\x07\x14\xb0\xf3\xb3\x07\x01\xb2\xf4\xb3\x07\ngo_private:\x10\xfa\xf8\xb3\x07\x0b\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\"\xf9\x01\n\x12\x41\x63\x63\x65ssRequestEvent\x12\x16\n\x02id\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1e\n\nrequest_id\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08\x61\x63tor_id\x18\x03 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x18\n\x04type\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08metadata\x18\x05 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x43\n\x04time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x19\xf2\xf8\xb3\x07\x14\xb0\xf3\xb3\x07\x01\xb2\xf4\xb3\x07\ngo_private:\x10\xfa\xf8\xb3\x07\x0b\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\"\xfc\x02\n\x13RequestableResource\x12\x16\n\x02id\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x18\n\x04name\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1b\n\x07healthy\x18\x03 \x01(\x08\x42\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x18\n\x04type\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\"\n\x0e\x61uthentication\x18\x05 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\"\n\x04tags\x18\x06 \x01(\x0b\x32\x08.v1.TagsB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1a\n\x06\x61\x63\x63\x65ss\x18\x07 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x44\n\nprivileges\x18\x08 \x01(\x0b\x32\x15.v1.PrivilegesMessageB\x19\xf2\xf8\xb3\x07\x14\xb0\xf3\xb3\x07\x01\xb2\xf4\xb3\x07\ngo_private\x12@\n\x1dprivileges_requirement_status\x18\t \x01(\tB\x19\xf2\xf8\xb3\x07\x14\xb0\xf3\xb3\x07\x01\xb2\xf4\xb3\x07\ngo_private:\x10\xfa\xf8\xb3\x07\x0b\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\"\xdc\x01\n\x11PrivilegesMessage\x12\x38\n\nkubernetes\x18\x01 \x01(\x0b\x32\x18.v1.KubernetesPrivilegesB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x39\n\x0b\x65ntraGroups\x18\x02 \x01(\x0b\x32\x18.v1.EntraGroupPrivilegesB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x37\n\noktaGroups\x18\x03 \x01(\x0b\x32\x17.v1.OktaGroupPrivilegesB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x19\xfa\xf8\xb3\x07\x14\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\ngo_private\"M\n\x14KubernetesPrivileges\x12\x1a\n\x06groups\x18\x01 \x03(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x19\xfa\xf8\xb3\x07\x14\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\ngo_private\"M\n\x14\x45ntraGroupPrivileges\x12\x1a\n\x06groups\x18\x01 \x03(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x19\xfa\xf8\xb3\x07\x14\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\ngo_private\"L\n\x13OktaGroupPrivileges\x12\x1a\n\x06groups\x18\x01 \x03(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x19\xfa\xf8\xb3\x07\x14\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\ngo_private\"\xc3\x01\n\x13\x41\x63\x63\x65ssRequestConfig\x12$\n\x0bresource_id\x18\x01 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1a\n\x06reason\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12:\n\nstart_from\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08\x64uration\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x10\xfa\xf8\xb3\x07\x0b\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\"\xcb\x03\n\x1aRequestAccessRequestConfig\x12\'\n\x0cresource_ids\x18\x01 \x03(\tB\x11\x18\x01\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1a\n\x06reason\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12:\n\nstart_from\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08\x64uration\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\xf2\x01\n\x0c\x61\x63\x63\x65ss_rules\x18\x05 \x01(\tB\xdb\x01\xf2\xf8\xb3\x07\xd5\x01\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\xa9\x01\xea\xf3\xb3\x07\x0c\x61\x63\x63\x65ss_rules\xf2\xf3\xb3\x07\x11\n\x02go\x12\x0b\x41\x63\x63\x65ssRules\xf2\xf3\xb3\x07\x19\n\ngo_private\x12\x0b\x41\x63\x63\x65ssRules\xf2\xf3\xb3\x07\x1b\n\x0cgo_terraform\x12\x0b\x41\x63\x63\x65ssRules\xf2\xf3\xb3\x07\x18\n\x04java\x12\x10List<AccessRule>\xf2\xf3\xb3\x07\"\n\x0cjson_gateway\x12\x12models.AccessRules\xba\xf4\xb3\x07\x17\x61\x63\x63\x65ssRulesDiffSuppress\xd0\xf4\xb3\x07\x01:\x19\xfa\xf8\xb3\x07\x14\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\ngo_private2\xd9\x01\n\x0e\x41\x63\x63\x65ssRequests\x12o\n\x04List\x12\x1c.v1.AccessRequestListRequest\x1a\x1d.v1.AccessRequestListResponse\"*\x82\xf9\xb3\x07\x08\xa2\xf3\xb3\x07\x03get\x82\xf9\xb3\x07\x18\xaa\xf3\xb3\x07\x13/v1/access-requests\x1aV\xca\xf9\xb3\x07\x12\xc2\xf9\xb3\x07\rAccessRequest\xca\xf9\xb3\x07\x08\xd2\xf9\xb3\x07\x03\x61q-\xca\xf9\xb3\x07\x06\xca\xf9\xb3\x07\x01*\xca\xf9\xb3\x07\x18\xca\xf9\xb3\x07\x13!terraform-provider\xca\xf9\xb3\x07\x05\xe8\xf9\xb3\x07\x01\x42\x92\x01\n\x19\x63om.strongdm.api.plumbingB\x16\x41\x63\x63\x65ssRequestsPlumbingZ5github.com/strongdm/strongdm-sdk-go/v3/internal/v1;v1\xc2\x92\xb4\x07\x06\xa2\x8c\xb4\x07\x01*\xc2\x92\xb4\x07\x18\xa2\x8c\xb4\x07\x13!terraform-providerb\x06proto3')
37
37
 
38
38
 
39
39
 
@@ -45,6 +45,7 @@ _REQUESTABLERESOURCE = DESCRIPTOR.message_types_by_name['RequestableResource']
45
45
  _PRIVILEGESMESSAGE = DESCRIPTOR.message_types_by_name['PrivilegesMessage']
46
46
  _KUBERNETESPRIVILEGES = DESCRIPTOR.message_types_by_name['KubernetesPrivileges']
47
47
  _ENTRAGROUPPRIVILEGES = DESCRIPTOR.message_types_by_name['EntraGroupPrivileges']
48
+ _OKTAGROUPPRIVILEGES = DESCRIPTOR.message_types_by_name['OktaGroupPrivileges']
48
49
  _ACCESSREQUESTCONFIG = DESCRIPTOR.message_types_by_name['AccessRequestConfig']
49
50
  _REQUESTACCESSREQUESTCONFIG = DESCRIPTOR.message_types_by_name['RequestAccessRequestConfig']
50
51
  AccessRequestListRequest = _reflection.GeneratedProtocolMessageType('AccessRequestListRequest', (_message.Message,), {
@@ -103,6 +104,13 @@ EntraGroupPrivileges = _reflection.GeneratedProtocolMessageType('EntraGroupPrivi
103
104
  })
104
105
  _sym_db.RegisterMessage(EntraGroupPrivileges)
105
106
 
107
+ OktaGroupPrivileges = _reflection.GeneratedProtocolMessageType('OktaGroupPrivileges', (_message.Message,), {
108
+ 'DESCRIPTOR' : _OKTAGROUPPRIVILEGES,
109
+ '__module__' : 'access_requests_pb2'
110
+ # @@protoc_insertion_point(class_scope:v1.OktaGroupPrivileges)
111
+ })
112
+ _sym_db.RegisterMessage(OktaGroupPrivileges)
113
+
106
114
  AccessRequestConfig = _reflection.GeneratedProtocolMessageType('AccessRequestConfig', (_message.Message,), {
107
115
  'DESCRIPTOR' : _ACCESSREQUESTCONFIG,
108
116
  '__module__' : 'access_requests_pb2'
@@ -200,6 +208,8 @@ if _descriptor._USE_C_DESCRIPTORS == False:
200
208
  _PRIVILEGESMESSAGE.fields_by_name['kubernetes']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001'
201
209
  _PRIVILEGESMESSAGE.fields_by_name['entraGroups']._options = None
202
210
  _PRIVILEGESMESSAGE.fields_by_name['entraGroups']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001'
211
+ _PRIVILEGESMESSAGE.fields_by_name['oktaGroups']._options = None
212
+ _PRIVILEGESMESSAGE.fields_by_name['oktaGroups']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001'
203
213
  _PRIVILEGESMESSAGE._options = None
204
214
  _PRIVILEGESMESSAGE._serialized_options = b'\372\370\263\007\024\250\363\263\007\001\322\363\263\007\ngo_private'
205
215
  _KUBERNETESPRIVILEGES.fields_by_name['groups']._options = None
@@ -210,6 +220,10 @@ if _descriptor._USE_C_DESCRIPTORS == False:
210
220
  _ENTRAGROUPPRIVILEGES.fields_by_name['groups']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001'
211
221
  _ENTRAGROUPPRIVILEGES._options = None
212
222
  _ENTRAGROUPPRIVILEGES._serialized_options = b'\372\370\263\007\024\250\363\263\007\001\322\363\263\007\ngo_private'
223
+ _OKTAGROUPPRIVILEGES.fields_by_name['groups']._options = None
224
+ _OKTAGROUPPRIVILEGES.fields_by_name['groups']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001'
225
+ _OKTAGROUPPRIVILEGES._options = None
226
+ _OKTAGROUPPRIVILEGES._serialized_options = b'\372\370\263\007\024\250\363\263\007\001\322\363\263\007\ngo_private'
213
227
  _ACCESSREQUESTCONFIG.fields_by_name['resource_id']._options = None
214
228
  _ACCESSREQUESTCONFIG.fields_by_name['resource_id']._serialized_options = b'\362\370\263\007\n\260\363\263\007\001\300\363\263\007\001'
215
229
  _ACCESSREQUESTCONFIG.fields_by_name['reason']._options = None
@@ -247,15 +261,17 @@ if _descriptor._USE_C_DESCRIPTORS == False:
247
261
  _REQUESTABLERESOURCE._serialized_start=1343
248
262
  _REQUESTABLERESOURCE._serialized_end=1723
249
263
  _PRIVILEGESMESSAGE._serialized_start=1726
250
- _PRIVILEGESMESSAGE._serialized_end=1889
251
- _KUBERNETESPRIVILEGES._serialized_start=1891
252
- _KUBERNETESPRIVILEGES._serialized_end=1968
253
- _ENTRAGROUPPRIVILEGES._serialized_start=1970
254
- _ENTRAGROUPPRIVILEGES._serialized_end=2047
255
- _ACCESSREQUESTCONFIG._serialized_start=2050
256
- _ACCESSREQUESTCONFIG._serialized_end=2245
257
- _REQUESTACCESSREQUESTCONFIG._serialized_start=2248
258
- _REQUESTACCESSREQUESTCONFIG._serialized_end=2707
259
- _ACCESSREQUESTS._serialized_start=2710
260
- _ACCESSREQUESTS._serialized_end=2927
264
+ _PRIVILEGESMESSAGE._serialized_end=1946
265
+ _KUBERNETESPRIVILEGES._serialized_start=1948
266
+ _KUBERNETESPRIVILEGES._serialized_end=2025
267
+ _ENTRAGROUPPRIVILEGES._serialized_start=2027
268
+ _ENTRAGROUPPRIVILEGES._serialized_end=2104
269
+ _OKTAGROUPPRIVILEGES._serialized_start=2106
270
+ _OKTAGROUPPRIVILEGES._serialized_end=2182
271
+ _ACCESSREQUESTCONFIG._serialized_start=2185
272
+ _ACCESSREQUESTCONFIG._serialized_end=2380
273
+ _REQUESTACCESSREQUESTCONFIG._serialized_start=2383
274
+ _REQUESTACCESSREQUESTCONFIG._serialized_end=2842
275
+ _ACCESSREQUESTS._serialized_start=2845
276
+ _ACCESSREQUESTS._serialized_end=3062
261
277
  # @@protoc_insertion_point(module_scope)
@@ -16,17 +16,23 @@
16
16
  # Code generated by protogen. DO NOT EDIT.
17
17
 
18
18
  import base64
19
+ import collections
19
20
  import copy
20
21
  import datetime
22
+ import functools
21
23
  import grpc
22
24
  import hashlib
23
25
  import hmac
24
26
  import random
27
+ import re
25
28
  import time
26
29
  from . import errors
27
30
  from . import plumbing
28
31
  from . import svc
29
32
 
33
+ from cryptography.hazmat.primitives.asymmetric import rsa, padding
34
+ from cryptography.hazmat.primitives import serialization, hashes
35
+
30
36
  # These defaults are taken from AWS. Customization of these values
31
37
  # is a future step in the API.
32
38
  DEFAULT_BASE_RETRY_DELAY = 1 # 1 second
@@ -34,7 +40,131 @@ DEFAULT_MAX_RETRY_DELAY = 120 # 120 seconds
34
40
  DEFAULT_RETRY_FACTOR = 1.6
35
41
  DEFAULT_RETRY_JITTER = 0.2
36
42
  API_VERSION = '2025-04-14'
37
- USER_AGENT = 'strongdm-sdk-python/15.40.0'
43
+ USER_AGENT = 'strongdm-sdk-python/15.43.0'
44
+
45
+ method_regexp = re.compile(r'\W+')
46
+
47
+
48
+ class _ClientCallDetails(
49
+ collections.namedtuple(
50
+ "_ClientCallDetails",
51
+ ("method", "timeout", "metadata", "credentials")),
52
+ grpc.ClientCallDetails,
53
+ ):
54
+ """ _ClientCallDetails is used to override some of the attributes of the client_call_details in the interceptors"""
55
+ pass
56
+
57
+
58
+ class _EncryptionInterceptor(grpc.UnaryUnaryClientInterceptor):
59
+ """ _EncryptionInterceptor is used to add transparent encryption/decryption support for managed secrets"""
60
+ def __init__(self, client):
61
+ self.client = client
62
+ self.public_key_cache = {}
63
+
64
+ def intercept_unary_unary(self, continuation, client_call_details,
65
+ request):
66
+ method = method_regexp.sub("_", client_call_details.method.lower())
67
+ callback = getattr(self, method, None)
68
+ if callback is not None:
69
+ return callback(continuation, client_call_details, request)
70
+ return continuation(client_call_details, request)
71
+
72
+ @functools.cached_property
73
+ def private_key(self):
74
+ return rsa.generate_private_key(
75
+ public_exponent=65537,
76
+ key_size=4096,
77
+ )
78
+
79
+ def _encrypt_secret(self, method, continuation, client_call_details,
80
+ request):
81
+ secret = request.managed_secret
82
+ if len(secret.value) != 0:
83
+ if secret.secret_engine_id not in self.public_key_cache:
84
+ try:
85
+ # fetch secret engine details to fill up self.public_key_cache
86
+ # if it fails the call to create/update will fail as well
87
+ self.client.secret_engines.get(secret.secret_engine_id)
88
+ except errors.RPCError:
89
+ pass
90
+ key = self.public_key_cache.get(secret.secret_engine_id)
91
+ if key is not None:
92
+ encrypted = key.encrypt(
93
+ secret.value,
94
+ padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()),
95
+ algorithm=hashes.SHA256(),
96
+ label=None))
97
+ secret.value = encrypted
98
+ client_call_details = _ClientCallDetails(
99
+ method=client_call_details.method,
100
+ timeout=client_call_details.timeout,
101
+ metadata=self.client.get_metadata(method, request),
102
+ credentials=client_call_details.credentials)
103
+ return continuation(client_call_details, request)
104
+
105
+ def _v1_managedsecrets_create(self, continuation, client_call_details,
106
+ request):
107
+ return self._encrypt_secret("ManagedSecrets.Create", continuation,
108
+ client_call_details, request)
109
+
110
+ def _v1_managedsecrets_update(self, continuation, client_call_details,
111
+ request):
112
+ return self._encrypt_secret("ManagedSecrets.Update", continuation,
113
+ client_call_details, request)
114
+
115
+ def _v1_managedsecrets_retrieve(self, continuation, client_call_details,
116
+ request):
117
+ if len(request.public_key) != 0:
118
+ return continuation(client_call_details, request)
119
+
120
+ privKey = self.private_key
121
+ request.public_key = privKey.public_key().public_bytes(
122
+ serialization.Encoding.PEM,
123
+ serialization.PublicFormat.SubjectPublicKeyInfo)
124
+ client_call_details = _ClientCallDetails(
125
+ method=client_call_details.method,
126
+ timeout=client_call_details.timeout,
127
+ metadata=self.client.get_metadata("ManagedSecrets.Retrieve",
128
+ request),
129
+ credentials=client_call_details.credentials)
130
+ resp = continuation(client_call_details, request)
131
+ if resp.code() != grpc.StatusCode.OK:
132
+ return resp
133
+ result = resp.result()
134
+ plaintext = privKey.decrypt(
135
+ result.managed_secret.value,
136
+ padding.OAEP(
137
+ mgf=padding.MGF1(algorithm=hashes.SHA256()),
138
+ algorithm=hashes.SHA256(),
139
+ label=None,
140
+ ))
141
+ result.managed_secret.value = plaintext
142
+ return resp
143
+
144
+ def _v1_secretengines_get(self, continuation, client_call_details,
145
+ request):
146
+ response = continuation(client_call_details, request)
147
+ if response.code() != grpc.StatusCode.OK:
148
+ return response
149
+ result = response.result()
150
+ engine = plumbing.convert_secret_engine_to_porcelain(
151
+ result.secret_engine)
152
+ engineKey = serialization.load_pem_public_key(engine.public_key)
153
+ self.public_key_cache[engine.id] = engineKey
154
+ return response
155
+
156
+ def _v1_secretengines_list(self, continuation, client_call_details,
157
+ request):
158
+ response = continuation(client_call_details, request)
159
+ if response.code() != grpc.StatusCode.OK:
160
+ return response
161
+ result = response.result()
162
+ for plumbing_engine in result.secret_engines:
163
+ engine = plumbing.convert_secret_engine_to_porcelain(
164
+ plumbing_engine)
165
+ engineKey = serialization.load_pem_public_key(engine.public_key)
166
+ self.public_key_cache[engine.id] = engineKey
167
+ return response
38
168
 
39
169
 
40
170
  class Client:
@@ -70,6 +200,7 @@ class Client:
70
200
  channel = grpc.secure_channel(host, creds)
71
201
  except Exception as e:
72
202
  raise plumbing.convert_error_to_porcelain(e) from e
203
+ channel = grpc.intercept_channel(channel, _EncryptionInterceptor(self))
73
204
  self.channel = channel
74
205
  self.access_requests = svc.AccessRequests(channel, self)
75
206
  '''
@@ -332,6 +332,7 @@ class ActivityVerb:
332
332
  RESOURCE_LOCKED = "user locked a resource"
333
333
  RESOURCE_UNLOCKED = "user unlocked a resource"
334
334
  RESOURCE_FORCE_UNLOCKED = "admin force-unlocked a resource"
335
+ RESOURCE_LOCK_REJECTED = "user lock rejected for a resource"
335
336
  CONCURRENT_AUTHENTICATION_REVOKED_PER_ORG_SETTING = "concurrent authentications revoked per organization settings"
336
337
  PEERING_GROUP_TOGGLED = "peering group toggled"
337
338
  PEERING_GROUP_CREATED = "peering group created"