strongdm 7.1.1__zip → 8.1.0__zip
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.
- {strongdm-7.1.1 → strongdm-8.1.0}/PKG-INFO +2 -2
- {strongdm-7.1.1 → strongdm-8.1.0}/setup.py +2 -2
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/accounts_pb2.py +45 -34
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/accounts_pb2_grpc.py +3 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/client.py +6 -3
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/constants.py +4 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/models.py +276 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/options_pb2.py +20 -20
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/plumbing.py +119 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/secret_store_types_pb2.py +80 -40
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/svc.py +5 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm.egg-info/PKG-INFO +2 -2
- {strongdm-7.1.1 → strongdm-8.1.0}/LICENSE +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/README.md +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/setup.cfg +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/__init__.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/access_request_events_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/access_request_events_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/access_requests_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/access_requests_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/access_requests_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/access_requests_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/account_attachments_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/account_attachments_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/account_attachments_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/account_attachments_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/account_grants_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/account_grants_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/account_grants_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/account_grants_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/account_permissions_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/account_permissions_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/account_resources_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/account_resources_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/account_resources_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/account_resources_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/accounts_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/accounts_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/activities_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/activities_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/approval_workflow_approvers_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/approval_workflow_approvers_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/approval_workflow_approvers_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/approval_workflow_approvers_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/approval_workflow_steps_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/approval_workflow_steps_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/approval_workflow_steps_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/approval_workflow_steps_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/approval_workflows_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/approval_workflows_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/approval_workflows_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/approval_workflows_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/control_panel_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/control_panel_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/drivers_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/drivers_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/errors.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/nodes_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/nodes_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/nodes_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/nodes_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/options_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/organization_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/organization_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/peering_group_nodes_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/peering_group_nodes_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/peering_group_peers_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/peering_group_peers_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/peering_group_resources_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/peering_group_resources_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/peering_groups_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/peering_groups_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/queries_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/queries_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/remote_identities_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/remote_identities_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/remote_identities_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/remote_identities_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/remote_identity_groups_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/remote_identity_groups_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/remote_identity_groups_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/remote_identity_groups_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/replays_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/replays_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/resources_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/resources_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/resources_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/resources_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/role_resources_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/role_resources_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/role_resources_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/role_resources_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/roles_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/roles_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/roles_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/roles_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/secret_store_healths_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/secret_store_healths_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/secret_store_types_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/secret_stores_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/secret_stores_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/secret_stores_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/secret_stores_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/spec_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/spec_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/tags_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/tags_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflow_approvers_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflow_approvers_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflow_approvers_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflow_approvers_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflow_assignments_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflow_assignments_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflow_assignments_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflow_assignments_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflow_roles_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflow_roles_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflow_roles_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflow_roles_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflows_history_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflows_history_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflows_pb2.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm/workflows_pb2_grpc.py +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm.egg-info/SOURCES.txt +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm.egg-info/dependency_links.txt +0 -0
- {strongdm-7.1.1 → strongdm-8.1.0}/strongdm.egg-info/requires.txt +0 -0
- {strongdm-7.1.1 → strongdm-8.1.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:
|
3
|
+
Version: 8.1.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/
|
9
|
+
Download-URL: https://github.com/strongdm/strongdm-sdk-python/archive/v8.1.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='
|
26
|
+
version='8.1.0',
|
27
27
|
license='apache-2.0',
|
28
28
|
description='strongDM SDK for the Python programming language.',
|
29
29
|
long_description=long_description,
|
@@ -32,7 +32,7 @@ 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/
|
35
|
+
'https://github.com/strongdm/strongdm-sdk-python/archive/v8.1.0.tar.gz',
|
36
36
|
keywords=[
|
37
37
|
'strongDM', 'sdm', 'api', 'automation', 'security', 'audit',
|
38
38
|
'database', 'server', 'ssh', 'rdp'
|
@@ -26,13 +26,14 @@ from google.protobuf import symbol_database as _symbol_database
|
|
26
26
|
_sym_db = _symbol_database.Default()
|
27
27
|
|
28
28
|
|
29
|
+
from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2
|
29
30
|
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
|
30
31
|
from . import options_pb2 as options__pb2
|
31
32
|
from . import spec_pb2 as spec__pb2
|
32
33
|
from . import tags_pb2 as tags__pb2
|
33
34
|
|
34
35
|
|
35
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0e\x61\x63\x63ounts.proto\x12\x02v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\roptions.proto\x1a\nspec.proto\x1a\ntags.proto\"i\n\x14\x41\x63\x63ountCreateRequest\x12\'\n\x04meta\x18\x01 \x01(\x0b\x32\x19.v1.CreateRequestMetadata\x12(\n\x07\x61\x63\x63ount\x18\x02 \x01(\x0b\x32\x0b.v1.AccountB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\"\
|
36
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0e\x61\x63\x63ounts.proto\x12\x02v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\roptions.proto\x1a\nspec.proto\x1a\ntags.proto\"i\n\x14\x41\x63\x63ountCreateRequest\x12\'\n\x04meta\x18\x01 \x01(\x0b\x32\x19.v1.CreateRequestMetadata\x12(\n\x07\x61\x63\x63ount\x18\x02 \x01(\x0b\x32\x0b.v1.AccountB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\"\xf8\x02\n\x15\x41\x63\x63ountCreateResponse\x12\x34\n\x04meta\x18\x01 \x01(\x0b\x32\x1a.v1.CreateResponseMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12(\n\x07\x61\x63\x63ount\x18\x02 \x01(\x0b\x32\x0b.v1.AccountB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1e\n\x05token\x18\x03 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xf0\xf3\xb3\x07\x01\x12W\n\nrate_limit\x18\x04 \x01(\x0b\x32\x15.v1.RateLimitMetadataB,\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\xf2\xf8\xb3\x07\x06\xb2\xf4\xb3\x07\x01*\xf2\xf8\xb3\x07\x12\xb2\xf4\xb3\x07\r!json_gateway\x12<\n\naccess_key\x18\x05 \x01(\tB(\xf2\xf8\xb3\x07#\xb0\xf3\xb3\x07\x01\xb2\xf4\xb3\x07\x01*\xb2\xf4\xb3\x07\x13!terraform-provider\x12<\n\nsecret_key\x18\x06 \x01(\tB(\xf2\xf8\xb3\x07#\xb0\xf3\xb3\x07\x01\xb2\xf4\xb3\x07\x01*\xb2\xf4\xb3\x07\x13!terraform-provider:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"Q\n\x11\x41\x63\x63ountGetRequest\x12$\n\x04meta\x18\x01 \x01(\x0b\x32\x16.v1.GetRequestMetadata\x12\x16\n\x02id\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\"\xd6\x01\n\x12\x41\x63\x63ountGetResponse\x12\x31\n\x04meta\x18\x01 \x01(\x0b\x32\x17.v1.GetResponseMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12(\n\x07\x61\x63\x63ount\x18\x02 \x01(\x0b\x32\x0b.v1.AccountB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12W\n\nrate_limit\x18\x03 \x01(\x0b\x32\x15.v1.RateLimitMetadataB,\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\xf2\xf8\xb3\x07\x06\xb2\xf4\xb3\x07\x01*\xf2\xf8\xb3\x07\x12\xb2\xf4\xb3\x07\r!json_gateway:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"u\n\x14\x41\x63\x63ountUpdateRequest\x12\'\n\x04meta\x18\x01 \x01(\x0b\x32\x19.v1.UpdateRequestMetadata\x12\n\n\x02id\x18\x02 \x01(\t\x12(\n\x07\x61\x63\x63ount\x18\x03 \x01(\x0b\x32\x0b.v1.AccountB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\"\xdc\x01\n\x15\x41\x63\x63ountUpdateResponse\x12\x34\n\x04meta\x18\x01 \x01(\x0b\x32\x1a.v1.UpdateResponseMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12(\n\x07\x61\x63\x63ount\x18\x02 \x01(\x0b\x32\x0b.v1.AccountB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12W\n\nrate_limit\x18\x03 \x01(\x0b\x32\x15.v1.RateLimitMetadataB,\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\xf2\xf8\xb3\x07\x06\xb2\xf4\xb3\x07\x01*\xf2\xf8\xb3\x07\x12\xb2\xf4\xb3\x07\r!json_gateway:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"W\n\x14\x41\x63\x63ountDeleteRequest\x12\'\n\x04meta\x18\x01 \x01(\x0b\x32\x19.v1.DeleteRequestMetadata\x12\x16\n\x02id\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\"\xb2\x01\n\x15\x41\x63\x63ountDeleteResponse\x12\x34\n\x04meta\x18\x01 \x01(\x0b\x32\x1a.v1.DeleteResponseMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12W\n\nrate_limit\x18\x02 \x01(\x0b\x32\x15.v1.RateLimitMetadataB,\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\xf2\xf8\xb3\x07\x06\xb2\xf4\xb3\x07\x01*\xf2\xf8\xb3\x07\x12\xb2\xf4\xb3\x07\r!json_gateway:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"W\n\x12\x41\x63\x63ountListRequest\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\"\xc1\x01\n\x13\x41\x63\x63ountListResponse\x12&\n\x04meta\x18\x01 \x01(\x0b\x32\x18.v1.ListResponseMetadata\x12)\n\x08\x61\x63\x63ounts\x18\x02 \x03(\x0b\x32\x0b.v1.AccountB\n\xf2\xf8\xb3\x07\x05\xb8\xf3\xb3\x07\x01\x12W\n\nrate_limit\x18\x03 \x01(\x0b\x32\x15.v1.RateLimitMetadataB,\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\xf2\xf8\xb3\x07\x06\xb2\xf4\xb3\x07\x01*\xf2\xf8\xb3\x07\x12\xb2\xf4\xb3\x07\r!json_gateway\"\x94\x02\n\x07\x41\x63\x63ount\x12$\n\x04user\x18\x01 \x01(\x0b\x32\x08.v1.UserB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01H\x00\x12*\n\x07service\x18\x02 \x01(\x0b\x32\x0b.v1.ServiceB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01H\x00\x12&\n\x05token\x18\x03 \x01(\x0b\x32\t.v1.TokenB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01H\x00:a\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\xfa\xf8\xb3\x07R\xc2\xf3\xb3\x07M\xa2\xf3\xb3\x07 tf_examples/account_resource.txt\xaa\xf3\xb3\x07#tf_examples/account_data_source.txtB,\n\x07\x61\x63\x63ount\x12!\xaa\xf8\xb3\x07\x0e\xaa\xf8\xb3\x07\tsuspended\xaa\xf8\xb3\x07\t\xaa\xf8\xb3\x07\x04tags\"\xd2\x06\n\x04User\x12\x16\n\x02id\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1e\n\x05\x65mail\x18\x02 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12#\n\nfirst_name\x18\x03 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\"\n\tlast_name\x18\x04 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12*\n\tsuspended\x18\x05 \x01(\x08\x42\x17\xf2\xf8\xb3\x07\x12\xb2\xf4\xb3\x07\r!json_gateway\x12\"\n\x04tags\x18\x06 \x01(\x0b\x32\x08.v1.TagsB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x36\n\x10permission_level\x18\x07 \x01(\tB\x1c\xf2\xf8\xb3\x07\x17\x98\xf4\xb3\x07\x01\xb2\xf4\xb3\x07\r!json_gateway\x12#\n\nmanaged_by\x18\x08 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\x98\xf4\xb3\x07\x01\x12\x1f\n\x0b\x65xternal_id\x18\t \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\xdb\x01\n\x0bsuspendedRO\x18\n \x01(\x08\x42\xc5\x01\xf2\xf8\xb3\x07\xbf\x01\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\xaf\x01\xc2\xf4\xb3\x07\x0f\n\x02go\x12\tSuspended\xc2\xf4\xb3\x07\x10\n\x03\x63li\x12\tsuspended\xc2\xf4\xb3\x07\x11\n\x04ruby\x12\tsuspended\xc2\xf4\xb3\x07\x13\n\x06python\x12\tsuspended\xc2\xf4\xb3\x07\x11\n\x04java\x12\tSuspended\xc2\xf4\xb3\x07\x1f\n\x12terraform-provider\x12\tsuspended\xc2\xf4\xb3\x07\x19\n\x0cjson_gateway\x12\tsuspended\x98\xf4\xb3\x07\x01\x12\x90\x02\n\x12permission_levelRW\x18\x0b \x01(\tB\xf3\x01\xf2\xf8\xb3\x07\xed\x01\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\xdd\x01\xc2\xf4\xb3\x07\x15\n\x02go\x12\x0fPermissionLevel\xc2\xf4\xb3\x07\x17\n\x03\x63li\x12\x10permission-level\xc2\xf4\xb3\x07\x18\n\x04ruby\x12\x10permission_level\xc2\xf4\xb3\x07\x1a\n\x06python\x12\x10permission_level\xc2\xf4\xb3\x07\x17\n\x04java\x12\x0fPermissionLevel\xc2\xf4\xb3\x07&\n\x12terraform-provider\x12\x10permission_level\xc2\xf4\xb3\x07\x1f\n\x0cjson_gateway\x12\x0fpermissionLevel\xd0\xf4\xb3\x07\x01:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"\x8f\x01\n\x07Service\x12\x16\n\x02id\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1d\n\x04name\x18\x02 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1d\n\tsuspended\x18\x03 \x01(\x08\x42\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\"\n\x04tags\x18\x04 \x01(\x0b\x32\x08.v1.TagsB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"\x81\x03\n\x05Token\x12\x16\n\x02id\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1d\n\x04name\x18\x02 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1d\n\tsuspended\x18\x03 \x01(\x08\x42\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\"\n\x04tags\x18\x04 \x01(\x0b\x32\x08.v1.TagsB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x37\n\x07rekeyed\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x38\n\x08\x64\x65\x61\x64line\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12 \n\x0c\x61\x63\x63ount_type\x18\x07 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1f\n\x0bpermissions\x18\x08 \x03(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x37\n\x08\x64uration\x18\t \x01(\x0b\x32\x19.google.protobuf.DurationB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x0f\xfa\xf8\xb3\x07\n\xa8\xf3\xb3\x07\x01\xd8\xf3\xb3\x07\x01\x32\xab\x04\n\x08\x41\x63\x63ounts\x12\x63\n\x06\x43reate\x12\x18.v1.AccountCreateRequest\x1a\x19.v1.AccountCreateResponse\"$\x82\xf9\xb3\x07\t\xa2\xf3\xb3\x07\x04post\x82\xf9\xb3\x07\x11\xaa\xf3\xb3\x07\x0c/v1/accounts\x12^\n\x03Get\x12\x15.v1.AccountGetRequest\x1a\x16.v1.AccountGetResponse\"(\x82\xf9\xb3\x07\x08\xa2\xf3\xb3\x07\x03get\x82\xf9\xb3\x07\x16\xaa\xf3\xb3\x07\x11/v1/accounts/{id}\x12g\n\x06Update\x12\x18.v1.AccountUpdateRequest\x1a\x19.v1.AccountUpdateResponse\"(\x82\xf9\xb3\x07\x08\xa2\xf3\xb3\x07\x03put\x82\xf9\xb3\x07\x16\xaa\xf3\xb3\x07\x11/v1/accounts/{id}\x12j\n\x06\x44\x65lete\x12\x18.v1.AccountDeleteRequest\x1a\x19.v1.AccountDeleteResponse\"+\x82\xf9\xb3\x07\x0b\xa2\xf3\xb3\x07\x06\x64\x65lete\x82\xf9\xb3\x07\x16\xaa\xf3\xb3\x07\x11/v1/accounts/{id}\x12\\\n\x04List\x12\x16.v1.AccountListRequest\x1a\x17.v1.AccountListResponse\"#\x82\xf9\xb3\x07\x08\xa2\xf3\xb3\x07\x03get\x82\xf9\xb3\x07\x11\xaa\xf3\xb3\x07\x0c/v1/accounts\x1a\'\xca\xf9\xb3\x07\x0c\xc2\xf9\xb3\x07\x07\x41\x63\x63ount\xca\xf9\xb3\x07\x07\xd2\xf9\xb3\x07\x02\x61-\xca\xf9\xb3\x07\x05\xe0\xf9\xb3\x07\x01\x42\x64\n\x19\x63om.strongdm.api.plumbingB\x10\x41\x63\x63ountsPlumbingZ5github.com/strongdm/strongdm-sdk-go/v3/internal/v1;v1b\x06proto3')
|
36
37
|
|
37
38
|
|
38
39
|
|
@@ -163,6 +164,10 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
163
164
|
_ACCOUNTCREATERESPONSE.fields_by_name['token']._serialized_options = b'\362\370\263\007\n\260\363\263\007\001\360\363\263\007\001'
|
164
165
|
_ACCOUNTCREATERESPONSE.fields_by_name['rate_limit']._options = None
|
165
166
|
_ACCOUNTCREATERESPONSE.fields_by_name['rate_limit']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001\362\370\263\007\006\262\364\263\007\001*\362\370\263\007\022\262\364\263\007\r!json_gateway'
|
167
|
+
_ACCOUNTCREATERESPONSE.fields_by_name['access_key']._options = None
|
168
|
+
_ACCOUNTCREATERESPONSE.fields_by_name['access_key']._serialized_options = b'\362\370\263\007#\260\363\263\007\001\262\364\263\007\001*\262\364\263\007\023!terraform-provider'
|
169
|
+
_ACCOUNTCREATERESPONSE.fields_by_name['secret_key']._options = None
|
170
|
+
_ACCOUNTCREATERESPONSE.fields_by_name['secret_key']._serialized_options = b'\362\370\263\007#\260\363\263\007\001\262\364\263\007\001*\262\364\263\007\023!terraform-provider'
|
166
171
|
_ACCOUNTCREATERESPONSE._options = None
|
167
172
|
_ACCOUNTCREATERESPONSE._serialized_options = b'\372\370\263\007\005\250\363\263\007\001'
|
168
173
|
_ACCOUNTGETREQUEST.fields_by_name['id']._options = None
|
@@ -206,7 +211,7 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
206
211
|
_ACCOUNT.fields_by_name['service']._options = None
|
207
212
|
_ACCOUNT.fields_by_name['service']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001'
|
208
213
|
_ACCOUNT.fields_by_name['token']._options = None
|
209
|
-
_ACCOUNT.fields_by_name['token']._serialized_options = b'\362\370\263\007\
|
214
|
+
_ACCOUNT.fields_by_name['token']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001'
|
210
215
|
_ACCOUNT._options = None
|
211
216
|
_ACCOUNT._serialized_options = b'\372\370\263\007\005\250\363\263\007\001\372\370\263\007R\302\363\263\007M\242\363\263\007 tf_examples/account_resource.txt\252\363\263\007#tf_examples/account_data_source.txt'
|
212
217
|
_USER.fields_by_name['id']._options = None
|
@@ -255,10 +260,16 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
255
260
|
_TOKEN.fields_by_name['rekeyed']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001'
|
256
261
|
_TOKEN.fields_by_name['deadline']._options = None
|
257
262
|
_TOKEN.fields_by_name['deadline']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001'
|
263
|
+
_TOKEN.fields_by_name['account_type']._options = None
|
264
|
+
_TOKEN.fields_by_name['account_type']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001'
|
265
|
+
_TOKEN.fields_by_name['permissions']._options = None
|
266
|
+
_TOKEN.fields_by_name['permissions']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001'
|
267
|
+
_TOKEN.fields_by_name['duration']._options = None
|
268
|
+
_TOKEN.fields_by_name['duration']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001'
|
258
269
|
_TOKEN._options = None
|
259
|
-
_TOKEN._serialized_options = b'\372\370\263\007\
|
270
|
+
_TOKEN._serialized_options = b'\372\370\263\007\n\250\363\263\007\001\330\363\263\007\001'
|
260
271
|
_ACCOUNTS._options = None
|
261
|
-
_ACCOUNTS._serialized_options = b'\312\371\263\007\014\302\371\263\007\007Account\312\371\263\007\007\322\371\263\007\002a
|
272
|
+
_ACCOUNTS._serialized_options = b'\312\371\263\007\014\302\371\263\007\007Account\312\371\263\007\007\322\371\263\007\002a-\312\371\263\007\005\340\371\263\007\001'
|
262
273
|
_ACCOUNTS.methods_by_name['Create']._options = None
|
263
274
|
_ACCOUNTS.methods_by_name['Create']._serialized_options = b'\202\371\263\007\t\242\363\263\007\004post\202\371\263\007\021\252\363\263\007\014/v1/accounts'
|
264
275
|
_ACCOUNTS.methods_by_name['Get']._options = None
|
@@ -269,34 +280,34 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
269
280
|
_ACCOUNTS.methods_by_name['Delete']._serialized_options = b'\202\371\263\007\013\242\363\263\007\006delete\202\371\263\007\026\252\363\263\007\021/v1/accounts/{id}'
|
270
281
|
_ACCOUNTS.methods_by_name['List']._options = None
|
271
282
|
_ACCOUNTS.methods_by_name['List']._serialized_options = b'\202\371\263\007\010\242\363\263\007\003get\202\371\263\007\021\252\363\263\007\014/v1/accounts'
|
272
|
-
_ACCOUNTCREATEREQUEST._serialized_start=
|
273
|
-
_ACCOUNTCREATEREQUEST._serialized_end=
|
274
|
-
_ACCOUNTCREATERESPONSE._serialized_start=
|
275
|
-
_ACCOUNTCREATERESPONSE._serialized_end=
|
276
|
-
_ACCOUNTGETREQUEST._serialized_start=
|
277
|
-
_ACCOUNTGETREQUEST._serialized_end=
|
278
|
-
_ACCOUNTGETRESPONSE._serialized_start=
|
279
|
-
_ACCOUNTGETRESPONSE._serialized_end=
|
280
|
-
_ACCOUNTUPDATEREQUEST._serialized_start=
|
281
|
-
_ACCOUNTUPDATEREQUEST._serialized_end=
|
282
|
-
_ACCOUNTUPDATERESPONSE._serialized_start=
|
283
|
-
_ACCOUNTUPDATERESPONSE._serialized_end=
|
284
|
-
_ACCOUNTDELETEREQUEST._serialized_start=
|
285
|
-
_ACCOUNTDELETEREQUEST._serialized_end=
|
286
|
-
_ACCOUNTDELETERESPONSE._serialized_start=
|
287
|
-
_ACCOUNTDELETERESPONSE._serialized_end=
|
288
|
-
_ACCOUNTLISTREQUEST._serialized_start=
|
289
|
-
_ACCOUNTLISTREQUEST._serialized_end=
|
290
|
-
_ACCOUNTLISTRESPONSE._serialized_start=
|
291
|
-
_ACCOUNTLISTRESPONSE._serialized_end=
|
292
|
-
_ACCOUNT._serialized_start=
|
293
|
-
_ACCOUNT._serialized_end=
|
294
|
-
_USER._serialized_start=
|
295
|
-
_USER._serialized_end=
|
296
|
-
_SERVICE._serialized_start=
|
297
|
-
_SERVICE._serialized_end=
|
298
|
-
_TOKEN._serialized_start=
|
299
|
-
_TOKEN._serialized_end=
|
300
|
-
_ACCOUNTS._serialized_start=
|
301
|
-
_ACCOUNTS._serialized_end=
|
283
|
+
_ACCOUNTCREATEREQUEST._serialized_start=126
|
284
|
+
_ACCOUNTCREATEREQUEST._serialized_end=231
|
285
|
+
_ACCOUNTCREATERESPONSE._serialized_start=234
|
286
|
+
_ACCOUNTCREATERESPONSE._serialized_end=610
|
287
|
+
_ACCOUNTGETREQUEST._serialized_start=612
|
288
|
+
_ACCOUNTGETREQUEST._serialized_end=693
|
289
|
+
_ACCOUNTGETRESPONSE._serialized_start=696
|
290
|
+
_ACCOUNTGETRESPONSE._serialized_end=910
|
291
|
+
_ACCOUNTUPDATEREQUEST._serialized_start=912
|
292
|
+
_ACCOUNTUPDATEREQUEST._serialized_end=1029
|
293
|
+
_ACCOUNTUPDATERESPONSE._serialized_start=1032
|
294
|
+
_ACCOUNTUPDATERESPONSE._serialized_end=1252
|
295
|
+
_ACCOUNTDELETEREQUEST._serialized_start=1254
|
296
|
+
_ACCOUNTDELETEREQUEST._serialized_end=1341
|
297
|
+
_ACCOUNTDELETERESPONSE._serialized_start=1344
|
298
|
+
_ACCOUNTDELETERESPONSE._serialized_end=1522
|
299
|
+
_ACCOUNTLISTREQUEST._serialized_start=1524
|
300
|
+
_ACCOUNTLISTREQUEST._serialized_end=1611
|
301
|
+
_ACCOUNTLISTRESPONSE._serialized_start=1614
|
302
|
+
_ACCOUNTLISTRESPONSE._serialized_end=1807
|
303
|
+
_ACCOUNT._serialized_start=1810
|
304
|
+
_ACCOUNT._serialized_end=2086
|
305
|
+
_USER._serialized_start=2089
|
306
|
+
_USER._serialized_end=2939
|
307
|
+
_SERVICE._serialized_start=2942
|
308
|
+
_SERVICE._serialized_end=3085
|
309
|
+
_TOKEN._serialized_start=3088
|
310
|
+
_TOKEN._serialized_end=3473
|
311
|
+
_ACCOUNTS._serialized_start=3476
|
312
|
+
_ACCOUNTS._serialized_end=4031
|
302
313
|
# @@protoc_insertion_point(module_scope)
|
@@ -23,6 +23,7 @@ class AccountsStub(object):
|
|
23
23
|
"""Accounts are users that have access to strongDM. There are two types of accounts:
|
24
24
|
1. **Users:** humans who are authenticated through username and password or SSO.
|
25
25
|
2. **Service Accounts:** machines that are authenticated using a service token.
|
26
|
+
3. **Tokens** are access keys with permissions that can be used for authentication.
|
26
27
|
"""
|
27
28
|
|
28
29
|
def __init__(self, channel):
|
@@ -62,6 +63,7 @@ class AccountsServicer(object):
|
|
62
63
|
"""Accounts are users that have access to strongDM. There are two types of accounts:
|
63
64
|
1. **Users:** humans who are authenticated through username and password or SSO.
|
64
65
|
2. **Service Accounts:** machines that are authenticated using a service token.
|
66
|
+
3. **Tokens** are access keys with permissions that can be used for authentication.
|
65
67
|
"""
|
66
68
|
|
67
69
|
def Create(self, request, context):
|
@@ -138,6 +140,7 @@ class Accounts(object):
|
|
138
140
|
"""Accounts are users that have access to strongDM. There are two types of accounts:
|
139
141
|
1. **Users:** humans who are authenticated through username and password or SSO.
|
140
142
|
2. **Service Accounts:** machines that are authenticated using a service token.
|
143
|
+
3. **Tokens** are access keys with permissions that can be used for authentication.
|
141
144
|
"""
|
142
145
|
|
143
146
|
@staticmethod
|
@@ -32,8 +32,8 @@ from . import svc
|
|
32
32
|
DEFAULT_MAX_RETRIES = 3
|
33
33
|
DEFAULT_BASE_RETRY_DELAY = 0.0030 # 30 ms
|
34
34
|
DEFAULT_MAX_RETRY_DELAY = 300 # 300 seconds
|
35
|
-
API_VERSION = '2024-03-
|
36
|
-
USER_AGENT = 'strongdm-sdk-python/
|
35
|
+
API_VERSION = '2024-03-28'
|
36
|
+
USER_AGENT = 'strongdm-sdk-python/8.1.0'
|
37
37
|
|
38
38
|
|
39
39
|
class Client:
|
@@ -139,6 +139,7 @@ class Client:
|
|
139
139
|
Accounts are users that have access to strongDM. There are two types of accounts:
|
140
140
|
1. **Users:** humans who are authenticated through username and password or SSO.
|
141
141
|
2. **Service Accounts:** machines that are authenticated using a service token.
|
142
|
+
3. **Tokens** are access keys with permissions that can be used for authentication.
|
142
143
|
|
143
144
|
See `strongdm.svc.Accounts`.
|
144
145
|
'''
|
@@ -426,7 +427,8 @@ class Client:
|
|
426
427
|
return hmac.new(key, msg=msg_byte_string,
|
427
428
|
digestmod=hashlib.sha256).digest()
|
428
429
|
|
429
|
-
current_utc_date = datetime.datetime.
|
430
|
+
current_utc_date = datetime.datetime.now(
|
431
|
+
datetime.timezone.utc).strftime('%Y-%m-%d')
|
430
432
|
signing_key = hmac_digest(self.api_secret, current_utc_date.encode())
|
431
433
|
signing_key = hmac_digest(signing_key, b'sdm_api_v1')
|
432
434
|
|
@@ -549,6 +551,7 @@ class SnapshotClient:
|
|
549
551
|
Accounts are users that have access to strongDM. There are two types of accounts:
|
550
552
|
1. **Users:** humans who are authenticated through username and password or SSO.
|
551
553
|
2. **Service Accounts:** machines that are authenticated using a service token.
|
554
|
+
3. **Tokens** are access keys with permissions that can be used for authentication.
|
552
555
|
|
553
556
|
See `strongdm.svc.SnapshotAccounts`.
|
554
557
|
'''
|
@@ -240,9 +240,13 @@ class ActivityVerb:
|
|
240
240
|
REMOTE_IDENTITY_GROUP_CREATED = "remote identity group created"
|
241
241
|
REMOTE_IDENTITY_GROUP_UPDATED = "remote identity group updated"
|
242
242
|
REMOTE_IDENTITY_GROUP_DELETED = "remote identity group deleted"
|
243
|
+
IDENTITY_SET_PROVISIONING_ENABLED = "identity set provisioning enabled"
|
244
|
+
IDENTITY_SET_PROVISIONING_DISABLED = "identity set provisioning disabled"
|
243
245
|
REMOTE_IDENTITY_CREATED = "remote identity created"
|
244
246
|
REMOTE_IDENTITY_UPDATED = "remote identity updated"
|
245
247
|
REMOTE_IDENTITY_DELETED = "remote identity deleted"
|
248
|
+
IDENTITY_ALIAS_PROVISIONING_ENABLED = "identity alias provisioning enabled"
|
249
|
+
IDENTITY_ALIAS_PROVISIONING_DISABLED = "identity alias provisioning disabled"
|
246
250
|
ACCESS_REQUESTED_TO_RESOURCE = "access requested to resource"
|
247
251
|
ACCESS_REQUEST_TO_RESOURCE_APPROVAL_ADDED = "access request to resource approval added"
|
248
252
|
ACCESS_REQUEST_TO_RESOURCE_CANCELED = "access request to resource canceled"
|
@@ -2153,19 +2153,27 @@ class AccountCreateResponse:
|
|
2153
2153
|
AccountCreateResponse reports how the Accounts were created in the system.
|
2154
2154
|
'''
|
2155
2155
|
__slots__ = [
|
2156
|
+
'access_key',
|
2156
2157
|
'account',
|
2157
2158
|
'meta',
|
2158
2159
|
'rate_limit',
|
2160
|
+
'secret_key',
|
2159
2161
|
'token',
|
2160
2162
|
]
|
2161
2163
|
|
2162
2164
|
def __init__(
|
2163
2165
|
self,
|
2166
|
+
access_key=None,
|
2164
2167
|
account=None,
|
2165
2168
|
meta=None,
|
2166
2169
|
rate_limit=None,
|
2170
|
+
secret_key=None,
|
2167
2171
|
token=None,
|
2168
2172
|
):
|
2173
|
+
self.access_key = access_key if access_key is not None else ''
|
2174
|
+
'''
|
2175
|
+
ID part of the API key.
|
2176
|
+
'''
|
2169
2177
|
self.account = account if account is not None else None
|
2170
2178
|
'''
|
2171
2179
|
The created Account.
|
@@ -2178,6 +2186,10 @@ class AccountCreateResponse:
|
|
2178
2186
|
'''
|
2179
2187
|
Rate limit information.
|
2180
2188
|
'''
|
2189
|
+
self.secret_key = secret_key if secret_key is not None else ''
|
2190
|
+
'''
|
2191
|
+
Secret part of the API key.
|
2192
|
+
'''
|
2181
2193
|
self.token = token if token is not None else ''
|
2182
2194
|
'''
|
2183
2195
|
The auth token generated for the Account. The Account will use this token to
|
@@ -2186,26 +2198,32 @@ class AccountCreateResponse:
|
|
2186
2198
|
|
2187
2199
|
def __repr__(self):
|
2188
2200
|
return '<sdm.AccountCreateResponse ' + \
|
2201
|
+
'access_key: ' + repr(self.access_key) + ' ' +\
|
2189
2202
|
'account: ' + repr(self.account) + ' ' +\
|
2190
2203
|
'meta: ' + repr(self.meta) + ' ' +\
|
2191
2204
|
'rate_limit: ' + repr(self.rate_limit) + ' ' +\
|
2205
|
+
'secret_key: ' + repr(self.secret_key) + ' ' +\
|
2192
2206
|
'token: ' + repr(self.token) + ' ' +\
|
2193
2207
|
'>'
|
2194
2208
|
|
2195
2209
|
def to_dict(self):
|
2196
2210
|
return {
|
2211
|
+
'access_key': self.access_key,
|
2197
2212
|
'account': self.account,
|
2198
2213
|
'meta': self.meta,
|
2199
2214
|
'rate_limit': self.rate_limit,
|
2215
|
+
'secret_key': self.secret_key,
|
2200
2216
|
'token': self.token,
|
2201
2217
|
}
|
2202
2218
|
|
2203
2219
|
@classmethod
|
2204
2220
|
def from_dict(cls, d):
|
2205
2221
|
return cls(
|
2222
|
+
access_key=d.get('access_key'),
|
2206
2223
|
account=d.get('account'),
|
2207
2224
|
meta=d.get('meta'),
|
2208
2225
|
rate_limit=d.get('rate_limit'),
|
2226
|
+
secret_key=d.get('secret_key'),
|
2209
2227
|
token=d.get('token'),
|
2210
2228
|
)
|
2211
2229
|
|
@@ -10475,6 +10493,157 @@ class HTTPNoAuth:
|
|
10475
10493
|
)
|
10476
10494
|
|
10477
10495
|
|
10496
|
+
class KeyfactorX509Store:
|
10497
|
+
__slots__ = [
|
10498
|
+
'ca_file_path',
|
10499
|
+
'certificate_file_path',
|
10500
|
+
'default_certificate_authority_name',
|
10501
|
+
'default_certificate_profile_name',
|
10502
|
+
'default_end_entity_profile_name',
|
10503
|
+
'enrollment_code_env_var',
|
10504
|
+
'enrollment_username_env_var',
|
10505
|
+
'id',
|
10506
|
+
'key_file_path',
|
10507
|
+
'key_password_env_var',
|
10508
|
+
'name',
|
10509
|
+
'server_address',
|
10510
|
+
'tags',
|
10511
|
+
]
|
10512
|
+
|
10513
|
+
def __init__(
|
10514
|
+
self,
|
10515
|
+
ca_file_path=None,
|
10516
|
+
certificate_file_path=None,
|
10517
|
+
default_certificate_authority_name=None,
|
10518
|
+
default_certificate_profile_name=None,
|
10519
|
+
default_end_entity_profile_name=None,
|
10520
|
+
enrollment_code_env_var=None,
|
10521
|
+
enrollment_username_env_var=None,
|
10522
|
+
id=None,
|
10523
|
+
key_file_path=None,
|
10524
|
+
key_password_env_var=None,
|
10525
|
+
name=None,
|
10526
|
+
server_address=None,
|
10527
|
+
tags=None,
|
10528
|
+
):
|
10529
|
+
self.ca_file_path = ca_file_path if ca_file_path is not None else ''
|
10530
|
+
'''
|
10531
|
+
Path to the root CA that signed the certificate passed to the client for HTTPS connection.
|
10532
|
+
This is not required if the CA is trusted by the host operating system. This should be a PEM
|
10533
|
+
formatted certificate, and doesn't necessarily have to be the CA that signed CertificateFile.
|
10534
|
+
'''
|
10535
|
+
self.certificate_file_path = certificate_file_path if certificate_file_path is not None else ''
|
10536
|
+
'''
|
10537
|
+
Path to client certificate in PEM format. This certificate must contain a client certificate that
|
10538
|
+
is recognized by the EJBCA instance represented by Hostname. This PEM file may also contain the private
|
10539
|
+
key associated with the certificate, but KeyFile can also be set to configure the private key.
|
10540
|
+
'''
|
10541
|
+
self.default_certificate_authority_name = default_certificate_authority_name if default_certificate_authority_name is not None else ''
|
10542
|
+
'''
|
10543
|
+
Name of EJBCA certificate authority that will enroll CSR.
|
10544
|
+
'''
|
10545
|
+
self.default_certificate_profile_name = default_certificate_profile_name if default_certificate_profile_name is not None else ''
|
10546
|
+
'''
|
10547
|
+
Certificate profile name that EJBCA will enroll the CSR with.
|
10548
|
+
'''
|
10549
|
+
self.default_end_entity_profile_name = default_end_entity_profile_name if default_end_entity_profile_name is not None else ''
|
10550
|
+
'''
|
10551
|
+
End entity profile that EJBCA will enroll the CSR with.
|
10552
|
+
'''
|
10553
|
+
self.enrollment_code_env_var = enrollment_code_env_var if enrollment_code_env_var is not None else ''
|
10554
|
+
'''
|
10555
|
+
code used by EJBCA during enrollment. May be left blank if no code is required.
|
10556
|
+
'''
|
10557
|
+
self.enrollment_username_env_var = enrollment_username_env_var if enrollment_username_env_var is not None else ''
|
10558
|
+
'''
|
10559
|
+
username that used by the EJBCA during enrollment. This can be left out.
|
10560
|
+
If so, the username must be auto-generated on the Keyfactor side.
|
10561
|
+
'''
|
10562
|
+
self.id = id if id is not None else ''
|
10563
|
+
'''
|
10564
|
+
Unique identifier of the SecretStore.
|
10565
|
+
'''
|
10566
|
+
self.key_file_path = key_file_path if key_file_path is not None else ''
|
10567
|
+
'''
|
10568
|
+
Path to private key in PEM format. This file should contain the private key associated with the
|
10569
|
+
client certificate configured in CertificateFile.
|
10570
|
+
'''
|
10571
|
+
self.key_password_env_var = key_password_env_var if key_password_env_var is not None else ''
|
10572
|
+
'''
|
10573
|
+
optional environment variable housing the password that is used to decrypt the key file.
|
10574
|
+
'''
|
10575
|
+
self.name = name if name is not None else ''
|
10576
|
+
'''
|
10577
|
+
Unique human-readable name of the SecretStore.
|
10578
|
+
'''
|
10579
|
+
self.server_address = server_address if server_address is not None else ''
|
10580
|
+
'''
|
10581
|
+
the host of the Key Factor CA
|
10582
|
+
'''
|
10583
|
+
self.tags = tags if tags is not None else _porcelain_zero_value_tags()
|
10584
|
+
'''
|
10585
|
+
Tags is a map of key, value pairs.
|
10586
|
+
'''
|
10587
|
+
|
10588
|
+
def __repr__(self):
|
10589
|
+
return '<sdm.KeyfactorX509Store ' + \
|
10590
|
+
'ca_file_path: ' + repr(self.ca_file_path) + ' ' +\
|
10591
|
+
'certificate_file_path: ' + repr(self.certificate_file_path) + ' ' +\
|
10592
|
+
'default_certificate_authority_name: ' + repr(self.default_certificate_authority_name) + ' ' +\
|
10593
|
+
'default_certificate_profile_name: ' + repr(self.default_certificate_profile_name) + ' ' +\
|
10594
|
+
'default_end_entity_profile_name: ' + repr(self.default_end_entity_profile_name) + ' ' +\
|
10595
|
+
'enrollment_code_env_var: ' + repr(self.enrollment_code_env_var) + ' ' +\
|
10596
|
+
'enrollment_username_env_var: ' + repr(self.enrollment_username_env_var) + ' ' +\
|
10597
|
+
'id: ' + repr(self.id) + ' ' +\
|
10598
|
+
'key_file_path: ' + repr(self.key_file_path) + ' ' +\
|
10599
|
+
'key_password_env_var: ' + repr(self.key_password_env_var) + ' ' +\
|
10600
|
+
'name: ' + repr(self.name) + ' ' +\
|
10601
|
+
'server_address: ' + repr(self.server_address) + ' ' +\
|
10602
|
+
'tags: ' + repr(self.tags) + ' ' +\
|
10603
|
+
'>'
|
10604
|
+
|
10605
|
+
def to_dict(self):
|
10606
|
+
return {
|
10607
|
+
'ca_file_path': self.ca_file_path,
|
10608
|
+
'certificate_file_path': self.certificate_file_path,
|
10609
|
+
'default_certificate_authority_name':
|
10610
|
+
self.default_certificate_authority_name,
|
10611
|
+
'default_certificate_profile_name':
|
10612
|
+
self.default_certificate_profile_name,
|
10613
|
+
'default_end_entity_profile_name':
|
10614
|
+
self.default_end_entity_profile_name,
|
10615
|
+
'enrollment_code_env_var': self.enrollment_code_env_var,
|
10616
|
+
'enrollment_username_env_var': self.enrollment_username_env_var,
|
10617
|
+
'id': self.id,
|
10618
|
+
'key_file_path': self.key_file_path,
|
10619
|
+
'key_password_env_var': self.key_password_env_var,
|
10620
|
+
'name': self.name,
|
10621
|
+
'server_address': self.server_address,
|
10622
|
+
'tags': self.tags,
|
10623
|
+
}
|
10624
|
+
|
10625
|
+
@classmethod
|
10626
|
+
def from_dict(cls, d):
|
10627
|
+
return cls(
|
10628
|
+
ca_file_path=d.get('ca_file_path'),
|
10629
|
+
certificate_file_path=d.get('certificate_file_path'),
|
10630
|
+
default_certificate_authority_name=d.get(
|
10631
|
+
'default_certificate_authority_name'),
|
10632
|
+
default_certificate_profile_name=d.get(
|
10633
|
+
'default_certificate_profile_name'),
|
10634
|
+
default_end_entity_profile_name=d.get(
|
10635
|
+
'default_end_entity_profile_name'),
|
10636
|
+
enrollment_code_env_var=d.get('enrollment_code_env_var'),
|
10637
|
+
enrollment_username_env_var=d.get('enrollment_username_env_var'),
|
10638
|
+
id=d.get('id'),
|
10639
|
+
key_file_path=d.get('key_file_path'),
|
10640
|
+
key_password_env_var=d.get('key_password_env_var'),
|
10641
|
+
name=d.get('name'),
|
10642
|
+
server_address=d.get('server_address'),
|
10643
|
+
tags=d.get('tags'),
|
10644
|
+
)
|
10645
|
+
|
10646
|
+
|
10478
10647
|
class Kubernetes:
|
10479
10648
|
__slots__ = [
|
10480
10649
|
'bind_interface',
|
@@ -20826,6 +20995,113 @@ class Teradata:
|
|
20826
20995
|
)
|
20827
20996
|
|
20828
20997
|
|
20998
|
+
class Token:
|
20999
|
+
'''
|
21000
|
+
A Token is an account providing tokenized access for automation or integration use.
|
21001
|
+
Tokens include admin tokens, API keys, and SCIM tokens.
|
21002
|
+
'''
|
21003
|
+
__slots__ = [
|
21004
|
+
'account_type',
|
21005
|
+
'deadline',
|
21006
|
+
'duration',
|
21007
|
+
'id',
|
21008
|
+
'name',
|
21009
|
+
'permissions',
|
21010
|
+
'rekeyed',
|
21011
|
+
'suspended',
|
21012
|
+
'tags',
|
21013
|
+
]
|
21014
|
+
|
21015
|
+
def __init__(
|
21016
|
+
self,
|
21017
|
+
account_type=None,
|
21018
|
+
deadline=None,
|
21019
|
+
duration=None,
|
21020
|
+
id=None,
|
21021
|
+
name=None,
|
21022
|
+
permissions=None,
|
21023
|
+
rekeyed=None,
|
21024
|
+
suspended=None,
|
21025
|
+
tags=None,
|
21026
|
+
):
|
21027
|
+
self.account_type = account_type if account_type is not None else ''
|
21028
|
+
'''
|
21029
|
+
Corresponds to the type of token, e.g. api or admin-token.
|
21030
|
+
'''
|
21031
|
+
self.deadline = deadline if deadline is not None else None
|
21032
|
+
'''
|
21033
|
+
The timestamp when the Token will expire.
|
21034
|
+
'''
|
21035
|
+
self.duration = duration if duration is not None else None
|
21036
|
+
'''
|
21037
|
+
Duration from token creation to expiration.
|
21038
|
+
'''
|
21039
|
+
self.id = id if id is not None else ''
|
21040
|
+
'''
|
21041
|
+
Unique identifier of the Token.
|
21042
|
+
'''
|
21043
|
+
self.name = name if name is not None else ''
|
21044
|
+
'''
|
21045
|
+
Unique human-readable name of the Token.
|
21046
|
+
'''
|
21047
|
+
self.permissions = permissions if permissions is not None else []
|
21048
|
+
'''
|
21049
|
+
Permissions assigned to the token, e.g. role:create.
|
21050
|
+
'''
|
21051
|
+
self.rekeyed = rekeyed if rekeyed is not None else None
|
21052
|
+
'''
|
21053
|
+
The timestamp when the Token was last rekeyed.
|
21054
|
+
'''
|
21055
|
+
self.suspended = suspended if suspended is not None else False
|
21056
|
+
'''
|
21057
|
+
Reserved for future use. Always false for tokens.
|
21058
|
+
'''
|
21059
|
+
self.tags = tags if tags is not None else _porcelain_zero_value_tags()
|
21060
|
+
'''
|
21061
|
+
Tags is a map of key, value pairs.
|
21062
|
+
'''
|
21063
|
+
|
21064
|
+
def __repr__(self):
|
21065
|
+
return '<sdm.Token ' + \
|
21066
|
+
'account_type: ' + repr(self.account_type) + ' ' +\
|
21067
|
+
'deadline: ' + repr(self.deadline) + ' ' +\
|
21068
|
+
'duration: ' + repr(self.duration) + ' ' +\
|
21069
|
+
'id: ' + repr(self.id) + ' ' +\
|
21070
|
+
'name: ' + repr(self.name) + ' ' +\
|
21071
|
+
'permissions: ' + repr(self.permissions) + ' ' +\
|
21072
|
+
'rekeyed: ' + repr(self.rekeyed) + ' ' +\
|
21073
|
+
'suspended: ' + repr(self.suspended) + ' ' +\
|
21074
|
+
'tags: ' + repr(self.tags) + ' ' +\
|
21075
|
+
'>'
|
21076
|
+
|
21077
|
+
def to_dict(self):
|
21078
|
+
return {
|
21079
|
+
'account_type': self.account_type,
|
21080
|
+
'deadline': self.deadline,
|
21081
|
+
'duration': self.duration,
|
21082
|
+
'id': self.id,
|
21083
|
+
'name': self.name,
|
21084
|
+
'permissions': self.permissions,
|
21085
|
+
'rekeyed': self.rekeyed,
|
21086
|
+
'suspended': self.suspended,
|
21087
|
+
'tags': self.tags,
|
21088
|
+
}
|
21089
|
+
|
21090
|
+
@classmethod
|
21091
|
+
def from_dict(cls, d):
|
21092
|
+
return cls(
|
21093
|
+
account_type=d.get('account_type'),
|
21094
|
+
deadline=d.get('deadline'),
|
21095
|
+
duration=d.get('duration'),
|
21096
|
+
id=d.get('id'),
|
21097
|
+
name=d.get('name'),
|
21098
|
+
permissions=d.get('permissions'),
|
21099
|
+
rekeyed=d.get('rekeyed'),
|
21100
|
+
suspended=d.get('suspended'),
|
21101
|
+
tags=d.get('tags'),
|
21102
|
+
)
|
21103
|
+
|
21104
|
+
|
20829
21105
|
class Trino:
|
20830
21106
|
'''
|
20831
21107
|
Trino is currently unstable, and its API may change, or it may be removed,
|