strongdm 3.6.1__zip → 3.7.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-3.6.1 → strongdm-3.7.0}/PKG-INFO +2 -2
- {strongdm-3.6.1 → strongdm-3.7.0}/setup.py +2 -2
- strongdm-3.7.0/strongdm/account_attachments_history_pb2.py +96 -0
- strongdm-3.7.0/strongdm/account_attachments_history_pb2_grpc.py +84 -0
- strongdm-3.7.0/strongdm/account_grants_history_pb2.py +96 -0
- strongdm-3.7.0/strongdm/account_grants_history_pb2_grpc.py +84 -0
- strongdm-3.7.0/strongdm/account_permissions_pb2.py +97 -0
- strongdm-3.7.0/strongdm/account_permissions_pb2_grpc.py +87 -0
- strongdm-3.7.0/strongdm/account_resources_pb2.py +99 -0
- strongdm-3.7.0/strongdm/account_resources_pb2_grpc.py +87 -0
- strongdm-3.7.0/strongdm/accounts_history_pb2.py +96 -0
- strongdm-3.7.0/strongdm/accounts_history_pb2_grpc.py +84 -0
- strongdm-3.7.0/strongdm/activities_pb2.py +177 -0
- strongdm-3.7.0/strongdm/activities_pb2_grpc.py +124 -0
- strongdm-3.7.0/strongdm/client.py +432 -0
- strongdm-3.7.0/strongdm/constants.py +377 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/drivers_pb2.py +6 -6
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/models.py +1872 -132
- strongdm-3.7.0/strongdm/nodes_history_pb2.py +96 -0
- strongdm-3.7.0/strongdm/nodes_history_pb2_grpc.py +84 -0
- strongdm-3.7.0/strongdm/organization_history_pb2.py +154 -0
- strongdm-3.7.0/strongdm/organization_history_pb2_grpc.py +84 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/plumbing.py +935 -0
- strongdm-3.7.0/strongdm/queries_pb2.py +133 -0
- strongdm-3.7.0/strongdm/queries_pb2_grpc.py +90 -0
- strongdm-3.7.0/strongdm/remote_identities_history_pb2.py +96 -0
- strongdm-3.7.0/strongdm/remote_identities_history_pb2_grpc.py +84 -0
- strongdm-3.7.0/strongdm/remote_identity_groups_history_pb2.py +96 -0
- strongdm-3.7.0/strongdm/remote_identity_groups_history_pb2_grpc.py +84 -0
- strongdm-3.7.0/strongdm/replays_pb2.py +107 -0
- strongdm-3.7.0/strongdm/replays_pb2_grpc.py +87 -0
- strongdm-3.7.0/strongdm/resources_history_pb2.py +96 -0
- strongdm-3.7.0/strongdm/resources_history_pb2_grpc.py +84 -0
- strongdm-3.7.0/strongdm/role_resources_history_pb2.py +96 -0
- strongdm-3.7.0/strongdm/role_resources_history_pb2_grpc.py +84 -0
- strongdm-3.7.0/strongdm/role_resources_pb2.py +93 -0
- strongdm-3.7.0/strongdm/role_resources_pb2_grpc.py +87 -0
- strongdm-3.7.0/strongdm/roles_history_pb2.py +96 -0
- strongdm-3.7.0/strongdm/roles_history_pb2_grpc.py +84 -0
- strongdm-3.7.0/strongdm/secret_stores_history_pb2.py +96 -0
- strongdm-3.7.0/strongdm/secret_stores_history_pb2_grpc.py +84 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/svc.py +1199 -12
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm.egg-info/PKG-INFO +2 -2
- strongdm-3.7.0/strongdm.egg-info/SOURCES.txt +78 -0
- strongdm-3.6.1/strongdm/client.py +0 -199
- strongdm-3.6.1/strongdm/constants.py +0 -66
- strongdm-3.6.1/strongdm.egg-info/SOURCES.txt +0 -44
- {strongdm-3.6.1 → strongdm-3.7.0}/README.md +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/setup.cfg +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/__init__.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/account_attachments_pb2.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/account_attachments_pb2_grpc.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/account_grants_pb2.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/account_grants_pb2_grpc.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/accounts_pb2.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/accounts_pb2_grpc.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/control_panel_pb2.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/control_panel_pb2_grpc.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/drivers_pb2_grpc.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/errors.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/nodes_pb2.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/nodes_pb2_grpc.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/options_pb2.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/options_pb2_grpc.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/remote_identities_pb2.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/remote_identities_pb2_grpc.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/remote_identity_groups_pb2.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/remote_identity_groups_pb2_grpc.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/resources_pb2.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/resources_pb2_grpc.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/roles_pb2.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/roles_pb2_grpc.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/secret_store_types_pb2.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/secret_store_types_pb2_grpc.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/secret_stores_pb2.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/secret_stores_pb2_grpc.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/spec_pb2.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/spec_pb2_grpc.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/tags_pb2.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/tags_pb2_grpc.py +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm.egg-info/dependency_links.txt +0 -0
- {strongdm-3.6.1 → strongdm-3.7.0}/strongdm.egg-info/requires.txt +0 -0
- {strongdm-3.6.1 → strongdm-3.7.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.
|
3
|
+
Version: 3.7.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/v3.
|
9
|
+
Download-URL: https://github.com/strongdm/strongdm-sdk-python/archive/v3.7.0.tar.gz
|
10
10
|
Description: # strongDM SDK for Python
|
11
11
|
|
12
12
|
This is the official [strongDM](https://www.strongdm.com/) SDK for the Python
|
@@ -0,0 +1,78 @@
|
|
1
|
+
README.md
|
2
|
+
setup.py
|
3
|
+
strongdm/__init__.py
|
4
|
+
strongdm/account_attachments_history_pb2.py
|
5
|
+
strongdm/account_attachments_history_pb2_grpc.py
|
6
|
+
strongdm/account_attachments_pb2.py
|
7
|
+
strongdm/account_attachments_pb2_grpc.py
|
8
|
+
strongdm/account_grants_history_pb2.py
|
9
|
+
strongdm/account_grants_history_pb2_grpc.py
|
10
|
+
strongdm/account_grants_pb2.py
|
11
|
+
strongdm/account_grants_pb2_grpc.py
|
12
|
+
strongdm/account_permissions_pb2.py
|
13
|
+
strongdm/account_permissions_pb2_grpc.py
|
14
|
+
strongdm/account_resources_pb2.py
|
15
|
+
strongdm/account_resources_pb2_grpc.py
|
16
|
+
strongdm/accounts_history_pb2.py
|
17
|
+
strongdm/accounts_history_pb2_grpc.py
|
18
|
+
strongdm/accounts_pb2.py
|
19
|
+
strongdm/accounts_pb2_grpc.py
|
20
|
+
strongdm/activities_pb2.py
|
21
|
+
strongdm/activities_pb2_grpc.py
|
22
|
+
strongdm/client.py
|
23
|
+
strongdm/constants.py
|
24
|
+
strongdm/control_panel_pb2.py
|
25
|
+
strongdm/control_panel_pb2_grpc.py
|
26
|
+
strongdm/drivers_pb2.py
|
27
|
+
strongdm/drivers_pb2_grpc.py
|
28
|
+
strongdm/errors.py
|
29
|
+
strongdm/models.py
|
30
|
+
strongdm/nodes_history_pb2.py
|
31
|
+
strongdm/nodes_history_pb2_grpc.py
|
32
|
+
strongdm/nodes_pb2.py
|
33
|
+
strongdm/nodes_pb2_grpc.py
|
34
|
+
strongdm/options_pb2.py
|
35
|
+
strongdm/options_pb2_grpc.py
|
36
|
+
strongdm/organization_history_pb2.py
|
37
|
+
strongdm/organization_history_pb2_grpc.py
|
38
|
+
strongdm/plumbing.py
|
39
|
+
strongdm/queries_pb2.py
|
40
|
+
strongdm/queries_pb2_grpc.py
|
41
|
+
strongdm/remote_identities_history_pb2.py
|
42
|
+
strongdm/remote_identities_history_pb2_grpc.py
|
43
|
+
strongdm/remote_identities_pb2.py
|
44
|
+
strongdm/remote_identities_pb2_grpc.py
|
45
|
+
strongdm/remote_identity_groups_history_pb2.py
|
46
|
+
strongdm/remote_identity_groups_history_pb2_grpc.py
|
47
|
+
strongdm/remote_identity_groups_pb2.py
|
48
|
+
strongdm/remote_identity_groups_pb2_grpc.py
|
49
|
+
strongdm/replays_pb2.py
|
50
|
+
strongdm/replays_pb2_grpc.py
|
51
|
+
strongdm/resources_history_pb2.py
|
52
|
+
strongdm/resources_history_pb2_grpc.py
|
53
|
+
strongdm/resources_pb2.py
|
54
|
+
strongdm/resources_pb2_grpc.py
|
55
|
+
strongdm/role_resources_history_pb2.py
|
56
|
+
strongdm/role_resources_history_pb2_grpc.py
|
57
|
+
strongdm/role_resources_pb2.py
|
58
|
+
strongdm/role_resources_pb2_grpc.py
|
59
|
+
strongdm/roles_history_pb2.py
|
60
|
+
strongdm/roles_history_pb2_grpc.py
|
61
|
+
strongdm/roles_pb2.py
|
62
|
+
strongdm/roles_pb2_grpc.py
|
63
|
+
strongdm/secret_store_types_pb2.py
|
64
|
+
strongdm/secret_store_types_pb2_grpc.py
|
65
|
+
strongdm/secret_stores_history_pb2.py
|
66
|
+
strongdm/secret_stores_history_pb2_grpc.py
|
67
|
+
strongdm/secret_stores_pb2.py
|
68
|
+
strongdm/secret_stores_pb2_grpc.py
|
69
|
+
strongdm/spec_pb2.py
|
70
|
+
strongdm/spec_pb2_grpc.py
|
71
|
+
strongdm/svc.py
|
72
|
+
strongdm/tags_pb2.py
|
73
|
+
strongdm/tags_pb2_grpc.py
|
74
|
+
strongdm.egg-info/PKG-INFO
|
75
|
+
strongdm.egg-info/SOURCES.txt
|
76
|
+
strongdm.egg-info/dependency_links.txt
|
77
|
+
strongdm.egg-info/requires.txt
|
78
|
+
strongdm.egg-info/top_level.txt
|
@@ -1,199 +0,0 @@
|
|
1
|
-
# Copyright 2020 StrongDM Inc
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
#
|
15
|
-
|
16
|
-
# This file was generated by protogen. DO NOT EDIT.
|
17
|
-
|
18
|
-
import grpc
|
19
|
-
import hmac
|
20
|
-
import random
|
21
|
-
import hashlib
|
22
|
-
import base64
|
23
|
-
import datetime
|
24
|
-
import time
|
25
|
-
from . import svc
|
26
|
-
from . import plumbing
|
27
|
-
|
28
|
-
# These defaults are taken from AWS. Customization of these values
|
29
|
-
# is a future step in the API.
|
30
|
-
DEFAULT_MAX_RETRIES = 3
|
31
|
-
DEFAULT_BASE_RETRY_DELAY = 0.0030 # 30 ms
|
32
|
-
DEFAULT_MAX_RETRY_DELAY = 300 # 300 seconds
|
33
|
-
API_VERSION = '2021-08-23'
|
34
|
-
USER_AGENT = 'strongdm-sdk-python/3.6.1'
|
35
|
-
|
36
|
-
|
37
|
-
class Client:
|
38
|
-
'''Client interacts with the strongDM API.'''
|
39
|
-
def __init__(self,
|
40
|
-
api_access_key,
|
41
|
-
api_secret,
|
42
|
-
host='api.strongdm.com:443',
|
43
|
-
insecure=False,
|
44
|
-
retry_rate_limit_errors=True):
|
45
|
-
'''
|
46
|
-
Create a new Client.
|
47
|
-
|
48
|
-
- api_access_key: the access key to authenticate with strongDM
|
49
|
-
- api_secret: the secret key to authenticate with strongDM
|
50
|
-
'''
|
51
|
-
self.api_access_key = api_access_key.strip()
|
52
|
-
self.api_secret = base64.b64decode(api_secret.strip())
|
53
|
-
self.max_retries = DEFAULT_MAX_RETRIES
|
54
|
-
self.base_retry_delay = DEFAULT_BASE_RETRY_DELAY
|
55
|
-
self.max_retry_delay = DEFAULT_MAX_RETRY_DELAY
|
56
|
-
self.expose_rate_limit_errors = (not retry_rate_limit_errors)
|
57
|
-
self._test_options = {}
|
58
|
-
|
59
|
-
try:
|
60
|
-
if insecure:
|
61
|
-
channel = grpc.insecure_channel(host)
|
62
|
-
else:
|
63
|
-
creds = grpc.ssl_channel_credentials()
|
64
|
-
channel = grpc.secure_channel(host, creds)
|
65
|
-
except Exception as e:
|
66
|
-
raise plumbing.convert_error_to_porcelain(e) from e
|
67
|
-
self.channel = channel
|
68
|
-
self.account_attachments = svc.AccountAttachments(channel, self)
|
69
|
-
'''
|
70
|
-
AccountAttachments assign an account to a role.
|
71
|
-
|
72
|
-
See `strongdm.svc.AccountAttachments`.
|
73
|
-
'''
|
74
|
-
self.account_grants = svc.AccountGrants(channel, self)
|
75
|
-
'''
|
76
|
-
AccountGrants assign a resource directly to an account, giving the account the permission to connect to that resource.
|
77
|
-
|
78
|
-
See `strongdm.svc.AccountGrants`.
|
79
|
-
'''
|
80
|
-
self.accounts = svc.Accounts(channel, self)
|
81
|
-
'''
|
82
|
-
Accounts are users that have access to strongDM. There are two types of accounts:
|
83
|
-
1. **Users:** humans who are authenticated through username and password or SSO.
|
84
|
-
2. **Service Accounts:** machines that are authenticated using a service token.
|
85
|
-
|
86
|
-
See `strongdm.svc.Accounts`.
|
87
|
-
'''
|
88
|
-
self.control_panel = svc.ControlPanel(channel, self)
|
89
|
-
'''
|
90
|
-
ControlPanel contains all administrative controls.
|
91
|
-
|
92
|
-
See `strongdm.svc.ControlPanel`.
|
93
|
-
'''
|
94
|
-
self.nodes = svc.Nodes(channel, self)
|
95
|
-
'''
|
96
|
-
Nodes make up the strongDM network, and allow your users to connect securely to your resources. There are two types of nodes:
|
97
|
-
- **Gateways** are the entry points into network. They listen for connection from the strongDM client, and provide access to databases and servers.
|
98
|
-
- **Relays** are used to extend the strongDM network into segmented subnets. They provide access to databases and servers but do not listen for incoming connections.
|
99
|
-
|
100
|
-
See `strongdm.svc.Nodes`.
|
101
|
-
'''
|
102
|
-
self.remote_identities = svc.RemoteIdentities(channel, self)
|
103
|
-
'''
|
104
|
-
RemoteIdentities assign a resource directly to an account, giving the account the permission to connect to that resource.
|
105
|
-
|
106
|
-
See `strongdm.svc.RemoteIdentities`.
|
107
|
-
'''
|
108
|
-
self.remote_identity_groups = svc.RemoteIdentityGroups(channel, self)
|
109
|
-
'''
|
110
|
-
A RemoteIdentityGroup is a named grouping of Remote Identities for Accounts.
|
111
|
-
An Account's relationship to a RemoteIdentityGroup is defined via RemoteIdentity objects.
|
112
|
-
|
113
|
-
See `strongdm.svc.RemoteIdentityGroups`.
|
114
|
-
'''
|
115
|
-
self.resources = svc.Resources(channel, self)
|
116
|
-
'''
|
117
|
-
Resources are databases, servers, clusters, websites, or clouds that strongDM
|
118
|
-
delegates access to.
|
119
|
-
|
120
|
-
See `strongdm.svc.Resources`.
|
121
|
-
'''
|
122
|
-
self.roles = svc.Roles(channel, self)
|
123
|
-
'''
|
124
|
-
A Role has a list of access rules which determine which Resources the members
|
125
|
-
of the Role have access to. An Account can be a member of multiple Roles via
|
126
|
-
AccountAttachments.
|
127
|
-
|
128
|
-
See `strongdm.svc.Roles`.
|
129
|
-
'''
|
130
|
-
self.secret_stores = svc.SecretStores(channel, self)
|
131
|
-
'''
|
132
|
-
SecretStores are servers where resource secrets (passwords, keys) are stored.
|
133
|
-
|
134
|
-
See `strongdm.svc.SecretStores`.
|
135
|
-
'''
|
136
|
-
|
137
|
-
def close(self):
|
138
|
-
'''Closes this Client and releases all resources held by it.
|
139
|
-
|
140
|
-
Closing the Client will immediately terminate all RPCs active with the
|
141
|
-
Client and it is not valid to invoke new RPCs with the Client.
|
142
|
-
|
143
|
-
This method is idempotent.
|
144
|
-
'''
|
145
|
-
self.channel.close()
|
146
|
-
|
147
|
-
def get_metadata(self, method_name, req):
|
148
|
-
return [
|
149
|
-
('x-sdm-authentication', self.api_access_key),
|
150
|
-
('x-sdm-signature', self.sign(method_name,
|
151
|
-
req.SerializeToString())),
|
152
|
-
('x-sdm-api-version', API_VERSION),
|
153
|
-
('x-sdm-user-agent', USER_AGENT),
|
154
|
-
]
|
155
|
-
|
156
|
-
def sign(self, method_name, request_bytes):
|
157
|
-
def hmac_digest(key, msg_byte_string):
|
158
|
-
return hmac.new(key, msg=msg_byte_string,
|
159
|
-
digestmod=hashlib.sha256).digest()
|
160
|
-
|
161
|
-
current_utc_date = datetime.datetime.utcnow().strftime('%Y-%m-%d')
|
162
|
-
signing_key = hmac_digest(self.api_secret, current_utc_date.encode())
|
163
|
-
signing_key = hmac_digest(signing_key, b'sdm_api_v1')
|
164
|
-
|
165
|
-
hash = hashlib.sha256()
|
166
|
-
|
167
|
-
hash.update(method_name.encode())
|
168
|
-
hash.update(b'\n')
|
169
|
-
hash.update(request_bytes)
|
170
|
-
|
171
|
-
return base64.b64encode(hmac_digest(signing_key, hash.digest()))
|
172
|
-
|
173
|
-
def jitterSleep(self, iter):
|
174
|
-
dur_max = self.base_retry_delay * 2**iter
|
175
|
-
if (dur_max > self.max_retry_delay):
|
176
|
-
dur_max = self.max_retry_delay
|
177
|
-
# get a value between 0 and max
|
178
|
-
dur = random.random() * dur_max
|
179
|
-
time.sleep(dur)
|
180
|
-
|
181
|
-
def shouldRetry(self, iter, err):
|
182
|
-
if (iter >= self.max_retries - 1):
|
183
|
-
return False
|
184
|
-
if not isinstance(err, grpc.RpcError):
|
185
|
-
return True
|
186
|
-
if (not self.expose_rate_limit_errors
|
187
|
-
) and err.code() == grpc.StatusCode.RESOURCE_EXHAUSTED:
|
188
|
-
porcelain_err = plumbing.convert_error_to_porcelain(err)
|
189
|
-
wait_until = porcelain_err.rate_limit.reset_at
|
190
|
-
now = datetime.datetime.now(datetime.timezone.utc)
|
191
|
-
sleep_for = (wait_until - now).total_seconds()
|
192
|
-
# If timezones or clock drift causes this calculation to fail,
|
193
|
-
# wait at most one minute.
|
194
|
-
if sleep_for < 0 or sleep_for > 60:
|
195
|
-
sleep_for = 60
|
196
|
-
time.sleep(sleep_for)
|
197
|
-
return True
|
198
|
-
return err.code() == grpc.StatusCode.INTERNAL or err.code(
|
199
|
-
) == grpc.StatusCode.UNAVAILABLE
|
@@ -1,66 +0,0 @@
|
|
1
|
-
# Copyright 2020 StrongDM Inc
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
#
|
15
|
-
# @internal This file was generated by constgen. DO NOT EDIT.
|
16
|
-
|
17
|
-
|
18
|
-
# Permission Levels, shared by all entities capable of making authenticated requests against StrongDM.
|
19
|
-
class PermissionLevel:
|
20
|
-
ROOT_ADMIN = "root-admin"
|
21
|
-
ADMIN = "admin"
|
22
|
-
DATABASE_ADMIN = "database-admin"
|
23
|
-
TEAM_LEADER = "multi-team-leader"
|
24
|
-
USER = "user"
|
25
|
-
RELAY = "relay"
|
26
|
-
ADMIN_TOKEN = "admin-token"
|
27
|
-
SCIM_TOKEN = "scim-token"
|
28
|
-
SERVICE = "service"
|
29
|
-
SUSPENDED = "suspended"
|
30
|
-
EMPTY = ""
|
31
|
-
|
32
|
-
|
33
|
-
# Node Lifecycle States, defining whether a node was last reported online, offline, restarting, etc.
|
34
|
-
class NodeState:
|
35
|
-
NEW = "new"
|
36
|
-
VERIFYING_RESTART = "verifying_restart"
|
37
|
-
AWAITING_RESTART = "awaiting_restart"
|
38
|
-
RESTARTING = "restarting"
|
39
|
-
STARTED = "started"
|
40
|
-
STOPPED = "stopped"
|
41
|
-
DEAD = "dead"
|
42
|
-
|
43
|
-
|
44
|
-
# Providers responsible for managing roles and users.
|
45
|
-
# None, or an empty string, implies the user is managed by strongDM.
|
46
|
-
# Deprecated: Please use SCIMProvider instead.
|
47
|
-
class Provider:
|
48
|
-
NONE = ""
|
49
|
-
OKTA = "okta"
|
50
|
-
SAIL_POINT = "sailpoint"
|
51
|
-
AZURE = "azure"
|
52
|
-
GENERIC = "generic"
|
53
|
-
ONE_LOGIN = "onelogin"
|
54
|
-
GOOGLE = "google"
|
55
|
-
|
56
|
-
|
57
|
-
# Providers responsible for managing roles and users.
|
58
|
-
# None, or an empty string, implies the user is managed by strongDM.
|
59
|
-
class SCIMProvider:
|
60
|
-
NONE = ""
|
61
|
-
OKTA = "okta"
|
62
|
-
SAIL_POINT = "sailpoint"
|
63
|
-
AZURE = "azure"
|
64
|
-
GENERIC = "generic"
|
65
|
-
ONE_LOGIN = "onelogin"
|
66
|
-
GOOGLE = "google"
|
@@ -1,44 +0,0 @@
|
|
1
|
-
README.md
|
2
|
-
setup.py
|
3
|
-
strongdm/__init__.py
|
4
|
-
strongdm/account_attachments_pb2.py
|
5
|
-
strongdm/account_attachments_pb2_grpc.py
|
6
|
-
strongdm/account_grants_pb2.py
|
7
|
-
strongdm/account_grants_pb2_grpc.py
|
8
|
-
strongdm/accounts_pb2.py
|
9
|
-
strongdm/accounts_pb2_grpc.py
|
10
|
-
strongdm/client.py
|
11
|
-
strongdm/constants.py
|
12
|
-
strongdm/control_panel_pb2.py
|
13
|
-
strongdm/control_panel_pb2_grpc.py
|
14
|
-
strongdm/drivers_pb2.py
|
15
|
-
strongdm/drivers_pb2_grpc.py
|
16
|
-
strongdm/errors.py
|
17
|
-
strongdm/models.py
|
18
|
-
strongdm/nodes_pb2.py
|
19
|
-
strongdm/nodes_pb2_grpc.py
|
20
|
-
strongdm/options_pb2.py
|
21
|
-
strongdm/options_pb2_grpc.py
|
22
|
-
strongdm/plumbing.py
|
23
|
-
strongdm/remote_identities_pb2.py
|
24
|
-
strongdm/remote_identities_pb2_grpc.py
|
25
|
-
strongdm/remote_identity_groups_pb2.py
|
26
|
-
strongdm/remote_identity_groups_pb2_grpc.py
|
27
|
-
strongdm/resources_pb2.py
|
28
|
-
strongdm/resources_pb2_grpc.py
|
29
|
-
strongdm/roles_pb2.py
|
30
|
-
strongdm/roles_pb2_grpc.py
|
31
|
-
strongdm/secret_store_types_pb2.py
|
32
|
-
strongdm/secret_store_types_pb2_grpc.py
|
33
|
-
strongdm/secret_stores_pb2.py
|
34
|
-
strongdm/secret_stores_pb2_grpc.py
|
35
|
-
strongdm/spec_pb2.py
|
36
|
-
strongdm/spec_pb2_grpc.py
|
37
|
-
strongdm/svc.py
|
38
|
-
strongdm/tags_pb2.py
|
39
|
-
strongdm/tags_pb2_grpc.py
|
40
|
-
strongdm.egg-info/PKG-INFO
|
41
|
-
strongdm.egg-info/SOURCES.txt
|
42
|
-
strongdm.egg-info/dependency_links.txt
|
43
|
-
strongdm.egg-info/requires.txt
|
44
|
-
strongdm.egg-info/top_level.txt
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|