reverse-diagrams 0.2.6__tar.gz → 1.0.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 (47) hide show
  1. reverse_diagrams-1.0.0/.pre-commit-config.yaml +38 -0
  2. reverse_diagrams-1.0.0/LICENSE +13 -0
  3. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/PKG-INFO +36 -23
  4. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/README.md +22 -0
  5. reverse_diagrams-1.0.0/diagrams/code/graph_org.py +86 -0
  6. {reverse_diagrams-0.2.6/docs → reverse_diagrams-1.0.0/diagrams/code}/graph_sso.py +13 -15
  7. {reverse_diagrams-0.2.6/docs → reverse_diagrams-1.0.0/diagrams/code}/graph_sso_complete.py +0 -108
  8. reverse_diagrams-1.0.0/diagrams/code/iam_identity_center.png +0 -0
  9. reverse_diagrams-1.0.0/diagrams/code/organizations-state.png +0 -0
  10. reverse_diagrams-1.0.0/diagrams/code/sso-state.png +0 -0
  11. reverse_diagrams-1.0.0/diagrams/json/account_assignments.json +363 -0
  12. reverse_diagrams-1.0.0/diagrams/json/groups.json +87 -0
  13. reverse_diagrams-1.0.0/diagrams/json/organizations.json +112 -0
  14. reverse_diagrams-1.0.0/organizations-state.png +0 -0
  15. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/pyproject.toml +4 -10
  16. reverse_diagrams-1.0.0/src/aws/describe_identity_store.py +263 -0
  17. reverse_diagrams-1.0.0/src/aws/describe_organization.py +157 -0
  18. reverse_diagrams-1.0.0/src/aws/describe_sso.py +169 -0
  19. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/src/banner/banner.py +7 -2
  20. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/src/dgms/graph_mapper.py +75 -31
  21. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/src/dgms/graph_template.py +4 -4
  22. reverse_diagrams-1.0.0/src/export_report/export_csv.py +5 -0
  23. reverse_diagrams-1.0.0/src/reports/__init__.py +0 -0
  24. reverse_diagrams-1.0.0/src/reports/save_results.py +24 -0
  25. reverse_diagrams-1.0.0/src/reverse_diagrams.py +325 -0
  26. reverse_diagrams-1.0.0/src/version.py +2 -0
  27. reverse_diagrams-1.0.0/sso-state.png +0 -0
  28. reverse_diagrams-1.0.0/test3.py +6 -0
  29. reverse_diagrams-0.2.6/LICENSE +0 -21
  30. reverse_diagrams-0.2.6/docs/graph_org.py +0 -8
  31. reverse_diagrams-0.2.6/src/aws/describe_identity_store.py +0 -198
  32. reverse_diagrams-0.2.6/src/aws/describe_organization.py +0 -102
  33. reverse_diagrams-0.2.6/src/aws/describe_sso.py +0 -56
  34. reverse_diagrams-0.2.6/src/export_report/export_csv.py +0 -4
  35. reverse_diagrams-0.2.6/src/reverse_diagrams.py +0 -169
  36. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/.github/workflows/publish-to-test-pypi.yml +0 -0
  37. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/.gitignore +0 -0
  38. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/__init__.py +0 -0
  39. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/docs/images/organizations-state-copy.png +0 -0
  40. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/iam_identity_center.png +0 -0
  41. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/src/__init__.py +0 -0
  42. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/src/aws/__init__.py +0 -0
  43. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/src/banner/__init__.py +0 -0
  44. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/src/dgms/__init__.py +0 -0
  45. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/test.py +0 -0
  46. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/test2.py +0 -0
  47. {reverse_diagrams-0.2.6 → reverse_diagrams-1.0.0}/testdata.txt +0 -0
@@ -0,0 +1,38 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ # Ruff version.
4
+ rev: v0.1.11
5
+ hooks:
6
+ # Run the linter.
7
+ - id: ruff
8
+ args: [ --fix ]
9
+ # Run the formatter.
10
+ - id: ruff-format
11
+
12
+ - repo: https://github.com/miki725/importanize
13
+ rev: 0.8.0-alpha2
14
+ hooks:
15
+ - id: importanize
16
+
17
+ #- repo: https://github.com/PyCQA/bandit
18
+ # rev: 1.7.6
19
+ # hooks:
20
+ # - id: bandit
21
+
22
+
23
+ # repo: https://github.com/Lucas-C/pre-commit-hooks-safety
24
+ # rev: v1.7.2
25
+ # hooks:
26
+ # - id: python-safety-dependencies-check
27
+ # args: [check, --full-report, --file]
28
+
29
+ - repo: https://github.com/PyCQA/pydocstyle
30
+ rev: 6.3.0
31
+ hooks:
32
+ - id: pydocstyle
33
+
34
+
35
+
36
+
37
+
38
+
@@ -0,0 +1,13 @@
1
+ Copyright [2024] [Alejandro Velez]
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.
@@ -1,41 +1,32 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reverse_diagrams
3
- Version: 0.2.6
4
- Summary: Continuous Documentation Tool - Documentation as Code Tool - This package create reverse diagrams based on your current state in your cloud environment
3
+ Version: 1.0.0
4
+ Summary: Continuous Documentation Tool - Documentation as Code Tool - This package create reverse diagrams based on your current state in your cloud environment using diagrams library
5
5
  Project-URL: Homepage, https://github.com/velez94/reverse_diagrams
6
6
  Project-URL: Bug Tracker, https://github.com/velez94/reverse_diagrams/issues
7
7
  Author-email: Alejandro Velez <avelez@labvel.io>
8
- License: MIT License
8
+ License: Copyright [2024] [Alejandro Velez]
9
9
 
10
- Copyright (c) [2023] [Alejandro Velez]
10
+ Licensed under the Apache License, Version 2.0 (the "License");
11
+ you may not use this file except in compliance with the License.
12
+ You may obtain a copy of the License at
11
13
 
12
- Permission is hereby granted, free of charge, to any person obtaining a copy
13
- of this software and associated documentation files (the "Software"), to deal
14
- in the Software without restriction, including without limitation the rights
15
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
- copies of the Software, and to permit persons to whom the Software is
17
- furnished to do so, subject to the following conditions:
14
+ http://www.apache.org/licenses/LICENSE-2.0
18
15
 
19
- The above copyright notice and this permission notice shall be included in all
20
- copies or substantial portions of the Software.
21
-
22
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
- SOFTWARE.
16
+ Unless required by applicable law or agreed to in writing, software
17
+ distributed under the License is distributed on an "AS IS" BASIS,
18
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ See the License for the specific language governing permissions and
20
+ limitations under the License.
29
21
  License-File: LICENSE
30
- Classifier: License :: OSI Approved :: MIT License
31
22
  Classifier: Operating System :: OS Independent
32
23
  Classifier: Programming Language :: Python :: 3
33
24
  Requires-Python: >=3.8
34
25
  Requires-Dist: boto3>=1.26.44
35
26
  Requires-Dist: colorama>=0.4.4
36
- Requires-Dist: diagrams>=0.22.0
27
+ Requires-Dist: diagrams>=0.23.4
37
28
  Requires-Dist: emoji>=2.2.0
38
- Requires-Dist: jsonschema>=3.2.0
29
+ Requires-Dist: rich>=13.7.0
39
30
  Description-Content-Type: text/markdown
40
31
 
41
32
  <!-- START doctoc generated TOC please keep comment here to allow auto update -->
@@ -156,3 +147,25 @@ reverse_diagrams -c aws -p my-profile -i -r us-east-2
156
147
  reverse_diagrams -c aws -p my-profile -o -i -r us-east-2
157
148
  ```
158
149
 
150
+ ## Extras
151
+ ### Enable autocomplete
152
+ Argcomplete provides easy, extensible command line tab completion of arguments for your Python application.
153
+
154
+ It makes two assumptions:
155
+
156
+ * You’re using bash or zsh as your shell
157
+
158
+ * You’re using argparse to manage your command line arguments/options
159
+
160
+ Argcomplete is particularly useful if your program has lots of options or subparsers, and if your program can dynamically suggest completions for your argument/option values (for example, if the user is browsing resources over the network).
161
+ Run:
162
+ ```bash
163
+ activate-global-python-argcomplete
164
+ ```
165
+ and to make sure that bash knows about this script, you use
166
+ ```bash
167
+
168
+ echo 'eval "$(register-python-argcomplete reverse_diagrams)"' >> ~/.bashrc
169
+ source ~/.bashrc
170
+
171
+ ```
@@ -116,3 +116,25 @@ reverse_diagrams -c aws -p my-profile -i -r us-east-2
116
116
  reverse_diagrams -c aws -p my-profile -o -i -r us-east-2
117
117
  ```
118
118
 
119
+ ## Extras
120
+ ### Enable autocomplete
121
+ Argcomplete provides easy, extensible command line tab completion of arguments for your Python application.
122
+
123
+ It makes two assumptions:
124
+
125
+ * You’re using bash or zsh as your shell
126
+
127
+ * You’re using argparse to manage your command line arguments/options
128
+
129
+ Argcomplete is particularly useful if your program has lots of options or subparsers, and if your program can dynamically suggest completions for your argument/option values (for example, if the user is browsing resources over the network).
130
+ Run:
131
+ ```bash
132
+ activate-global-python-argcomplete
133
+ ```
134
+ and to make sure that bash knows about this script, you use
135
+ ```bash
136
+
137
+ echo 'eval "$(register-python-argcomplete reverse_diagrams)"' >> ~/.bashrc
138
+ source ~/.bashrc
139
+
140
+ ```
@@ -0,0 +1,86 @@
1
+
2
+ from diagrams import Diagram, Cluster
3
+
4
+ from diagrams.aws.management import Organizations, OrganizationsAccount, OrganizationsOrganizationalUnit
5
+
6
+ with Diagram("Organizations-State", show=False, direction="TB"):
7
+ ou = OrganizationsOrganizationalUnit("OU")
8
+ oa = OrganizationsAccount("Account")
9
+
10
+ with Cluster('Organizations'):
11
+
12
+ oo = Organizations('o-9tlhkjyoii\n029921763173\nr-w3ow')
13
+
14
+ ou_Sandbox= OrganizationsOrganizationalUnit("ou-w3ow-1sumtdvp\nSandbox")
15
+
16
+ oo>> ou_Sandbox
17
+
18
+ ou_Security= OrganizationsOrganizationalUnit("ou-w3ow-oqvta8tc\nSecurity")
19
+
20
+ oo>> ou_Security
21
+
22
+ ou_Workloads= OrganizationsOrganizationalUnit("ou-w3ow-1lpmyfug\nWorkloads")
23
+
24
+ oo>> ou_Workloads
25
+
26
+ ou_Dev= OrganizationsOrganizationalUnit("ou-w3ow-k24p2opx\nDev")
27
+
28
+ oo>> ou_Dev
29
+
30
+ ou_DevSecOps= OrganizationsOrganizationalUnit("ou-w3ow-b334bby6\nDevSecOps")
31
+
32
+ oo>> ou_DevSecOps
33
+
34
+ ou_Core= OrganizationsOrganizationalUnit("ou-w3ow-93hiq3zr\nCore")
35
+
36
+ oo>> ou_Core
37
+
38
+ ou_PolicyStaging= OrganizationsOrganizationalUnit("ou-w3ow-18verpsm\nPolicy Staging")
39
+
40
+ oo>> ou_PolicyStaging
41
+
42
+ ou_Suspended= OrganizationsOrganizationalUnit("ou-w3ow-7vunsbkd\nSuspended")
43
+
44
+ oo>> ou_Suspended
45
+
46
+ ou_Shared= OrganizationsOrganizationalUnit("ou-w3ow-w7dzhzcz\nShared")
47
+
48
+ oo>> ou_Shared
49
+
50
+ ou_Infrastructure= OrganizationsOrganizationalUnit("ou-w3ow-9q06w8rz\nInfrastructure")
51
+
52
+ oo>> ou_Infrastructure
53
+
54
+ ou_BULab= OrganizationsOrganizationalUnit("ou-w3ow-qa633svy\nBU-Lab")
55
+
56
+ ou_Workloads>> ou_BULab
57
+
58
+ ou_Prod= OrganizationsOrganizationalUnit("ou-w3ow-4sdr4ejy\nProd")
59
+
60
+ ou_BULab>> ou_Prod
61
+
62
+ ou_SDLC= OrganizationsOrganizationalUnit("ou-w3ow-vop5vccd\nSDLC")
63
+
64
+ ou_BULab>> ou_SDLC
65
+
66
+ ou_Core>> OrganizationsAccount("884478634998\nLog archive")
67
+
68
+ ou_Security>> OrganizationsAccount("835863553119\nSecOps")
69
+
70
+ ou_Prod>> OrganizationsAccount("582441254763\nProd")
71
+
72
+ ou_Core>> OrganizationsAccount("895882538541\nSecurityTooling")
73
+
74
+ ou_DevSecOps>> OrganizationsAccount("105171185823\nDevSecOps")
75
+
76
+ ou_Infrastructure>> OrganizationsAccount("994261317734\nOps")
77
+
78
+ ou_Infrastructure>> OrganizationsAccount("155794986228\nSharedServices")
79
+
80
+ oo >> OrganizationsAccount("904985504252\nClowPiloto")
81
+
82
+ oo >> OrganizationsAccount("029921763173\nLabVel")
83
+
84
+ ou_Security>> OrganizationsAccount("837696987585\nOrganizationMana\nger")
85
+
86
+ oo >> OrganizationsAccount("571340586587\nDev")
@@ -10,30 +10,28 @@ with Diagram("SSO-State", show=False, direction="TB"):
10
10
 
11
11
  with Cluster('Groups'):
12
12
 
13
- with Cluster("AWSAccountFactory"):
14
-
15
- gg_0= [User("velez94@protonma\nil.com"),]
13
+ gg_0= Users("AWSLogArchiveVie\nwers")
16
14
 
17
- gg_1= Users("AWSAuditAccountA\ndmins")
15
+ with Cluster("AWSControlTowerAdmins"):
18
16
 
19
- gg_2= Users("AWSLogArchiveAdm\nins")
17
+ gg_1= [User("velez94@protonma\nil.com"),]
20
18
 
21
- with Cluster("AWSControlTowerAdmins"):
19
+ gg_2= Users("AWSSecurityAudit\nors")
22
20
 
23
- gg_3= [User("velez94@protonma\nil.com"),]
21
+ with Cluster("SecOps_Adms"):
24
22
 
25
- gg_4= Users("AWSLogArchiveVie\nwers")
23
+ gg_3= [User("w.alejovl+secops\n-labs@gmail.com"),]
26
24
 
27
- gg_5= Users("AWSSecurityAudit\nors")
25
+ gg_4= Users("AWSServiceCatalo\ngAdmins")
28
26
 
29
- gg_6= Users("AWSSecurityAudit\nPowerUsers")
27
+ with Cluster("AWSAccountFactory"):
30
28
 
31
- with Cluster("DevSecOps_Admins"):
29
+ gg_5= [User("velez94@protonma\nil.com"),]
32
30
 
33
- gg_7= [User("DevSecOpsAdm"),]
31
+ gg_6= Users("AWSSecurityAudit\nPowerUsers")
34
32
 
35
- gg_8= Users("AWSServiceCatalo\ngAdmins")
33
+ gg_7= Users("AWSLogArchiveAdm\nins")
36
34
 
37
- with Cluster("SecOps_Adms"):
35
+ with Cluster("DevSecOps_Admins"):
38
36
 
39
- gg_9= [User("w.alejovl+secops\n-labs@gmail.com"),]
37
+ gg_8= [User("DevSecOpsAdm"),]
@@ -105,18 +105,6 @@ with Diagram("IAM Identity Center", show=False, direction="LR"):
105
105
  - mm_AWSSecurityAuditors
106
106
 
107
107
 
108
- with Cluster('Group: AWSControlTowerAdmins'):
109
-
110
- gg_AWSControlTowerAdmins=Users("AWSControlTowerA\ndmins")
111
- gg_AWSControlTowerAdmins \
112
- - Edge(color="brown", style="dotted", label="Permissions Set") \
113
- - IAMPermissions("AWSOrganizations\nFullAccess")
114
- mm_AWSControlTowerAdmins=[User("velez94@protonma\nil.com"),]
115
- gg_AWSControlTowerAdmins \
116
- - Edge(color="darkgreen", style="dotted", label="Member") \
117
- - mm_AWSControlTowerAdmins
118
-
119
-
120
108
  with Cluster('Account: Prod'):
121
109
 
122
110
  with Cluster('Group: AWSSecurityAuditPowerUsers'):
@@ -162,18 +150,6 @@ with Diagram("IAM Identity Center", show=False, direction="LR"):
162
150
  - mm_AWSSecurityAuditors
163
151
 
164
152
 
165
- with Cluster('Group: AWSControlTowerAdmins'):
166
-
167
- gg_AWSControlTowerAdmins=Users("AWSControlTowerA\ndmins")
168
- gg_AWSControlTowerAdmins \
169
- - Edge(color="brown", style="dotted", label="Permissions Set") \
170
- - IAMPermissions("AWSOrganizations\nFullAccess")
171
- mm_AWSControlTowerAdmins=[User("velez94@protonma\nil.com"),]
172
- gg_AWSControlTowerAdmins \
173
- - Edge(color="darkgreen", style="dotted", label="Member") \
174
- - mm_AWSControlTowerAdmins
175
-
176
-
177
153
  with Cluster('Account: SecurityTooling'):
178
154
 
179
155
  with Cluster('Group: AWSSecurityAuditPowerUsers'):
@@ -212,18 +188,6 @@ with Diagram("IAM Identity Center", show=False, direction="LR"):
212
188
  - mm_AWSControlTowerAdmins
213
189
 
214
190
 
215
- with Cluster('Group: AWSAuditAccountAdmins'):
216
-
217
- gg_AWSAuditAccountAdmins=Users("AWSAuditAccountA\ndmins")
218
- gg_AWSAuditAccountAdmins \
219
- - Edge(color="brown", style="dotted", label="Permissions Set") \
220
- - IAMPermissions("AWSAdministrator\nAccess")
221
- mm_AWSAuditAccountAdmins=[]
222
- gg_AWSAuditAccountAdmins \
223
- - Edge(color="darkgreen", style="dotted", label="Member") \
224
- - mm_AWSAuditAccountAdmins
225
-
226
-
227
191
  with Cluster('Group: AWSSecurityAuditors'):
228
192
 
229
193
  gg_AWSSecurityAuditors=Users("AWSSecurityAudit\nors")
@@ -305,18 +269,6 @@ with Diagram("IAM Identity Center", show=False, direction="LR"):
305
269
  - mm_AWSSecurityAuditors
306
270
 
307
271
 
308
- with Cluster('Group: AWSControlTowerAdmins'):
309
-
310
- gg_AWSControlTowerAdmins=Users("AWSControlTowerA\ndmins")
311
- gg_AWSControlTowerAdmins \
312
- - Edge(color="brown", style="dotted", label="Permissions Set") \
313
- - IAMPermissions("AWSOrganizations\nFullAccess")
314
- mm_AWSControlTowerAdmins=[User("velez94@protonma\nil.com"),]
315
- gg_AWSControlTowerAdmins \
316
- - Edge(color="darkgreen", style="dotted", label="Member") \
317
- - mm_AWSControlTowerAdmins
318
-
319
-
320
272
  with Cluster('Account: Ops'):
321
273
 
322
274
  with Cluster('Group: AWSSecurityAuditPowerUsers'):
@@ -350,18 +302,6 @@ with Diagram("IAM Identity Center", show=False, direction="LR"):
350
302
  - mm_AWSSecurityAuditors
351
303
 
352
304
 
353
- with Cluster('Group: AWSControlTowerAdmins'):
354
-
355
- gg_AWSControlTowerAdmins=Users("AWSControlTowerA\ndmins")
356
- gg_AWSControlTowerAdmins \
357
- - Edge(color="brown", style="dotted", label="Permissions Set") \
358
- - IAMPermissions("AWSOrganizations\nFullAccess")
359
- mm_AWSControlTowerAdmins=[User("velez94@protonma\nil.com"),]
360
- gg_AWSControlTowerAdmins \
361
- - Edge(color="darkgreen", style="dotted", label="Member") \
362
- - mm_AWSControlTowerAdmins
363
-
364
-
365
305
  with Cluster('Account: SharedServices'):
366
306
 
367
307
  with Cluster('Group: AWSSecurityAuditPowerUsers'):
@@ -407,18 +347,6 @@ with Diagram("IAM Identity Center", show=False, direction="LR"):
407
347
  - mm_AWSSecurityAuditors
408
348
 
409
349
 
410
- with Cluster('Group: AWSControlTowerAdmins'):
411
-
412
- gg_AWSControlTowerAdmins=Users("AWSControlTowerA\ndmins")
413
- gg_AWSControlTowerAdmins \
414
- - Edge(color="brown", style="dotted", label="Permissions Set") \
415
- - IAMPermissions("AWSOrganizations\nFullAccess")
416
- mm_AWSControlTowerAdmins=[User("velez94@protonma\nil.com"),]
417
- gg_AWSControlTowerAdmins \
418
- - Edge(color="darkgreen", style="dotted", label="Member") \
419
- - mm_AWSControlTowerAdmins
420
-
421
-
422
350
  with Cluster('Account: LabVel'):
423
351
 
424
352
  with Cluster('Group: AWSSecurityAuditPowerUsers'):
@@ -469,18 +397,6 @@ with Diagram("IAM Identity Center", show=False, direction="LR"):
469
397
  - mm_AWSSecurityAuditors
470
398
 
471
399
 
472
- with Cluster('Group: AWSServiceCatalogAdmins'):
473
-
474
- gg_AWSServiceCatalogAdmins=Users("AWSServiceCatalo\ngAdmins")
475
- gg_AWSServiceCatalogAdmins \
476
- - Edge(color="brown", style="dotted", label="Permissions Set") \
477
- - IAMPermissions("AWSServiceCatalo\ngAdminFullAccess")
478
- mm_AWSServiceCatalogAdmins=[]
479
- gg_AWSServiceCatalogAdmins \
480
- - Edge(color="darkgreen", style="dotted", label="Member") \
481
- - mm_AWSServiceCatalogAdmins
482
-
483
-
484
400
  with Cluster('Account: OrganizationManager'):
485
401
 
486
402
  with Cluster('Group: AWSSecurityAuditPowerUsers'):
@@ -526,18 +442,6 @@ with Diagram("IAM Identity Center", show=False, direction="LR"):
526
442
  - mm_AWSSecurityAuditors
527
443
 
528
444
 
529
- with Cluster('Group: AWSControlTowerAdmins'):
530
-
531
- gg_AWSControlTowerAdmins=Users("AWSControlTowerA\ndmins")
532
- gg_AWSControlTowerAdmins \
533
- - Edge(color="brown", style="dotted", label="Permissions Set") \
534
- - IAMPermissions("AWSOrganizations\nFullAccess")
535
- mm_AWSControlTowerAdmins=[User("velez94@protonma\nil.com"),]
536
- gg_AWSControlTowerAdmins \
537
- - Edge(color="darkgreen", style="dotted", label="Member") \
538
- - mm_AWSControlTowerAdmins
539
-
540
-
541
445
  with Cluster('Account: Dev'):
542
446
 
543
447
  with Cluster('Group: AWSSecurityAuditPowerUsers'):
@@ -582,15 +486,3 @@ with Diagram("IAM Identity Center", show=False, direction="LR"):
582
486
  - Edge(color="darkgreen", style="dotted", label="Member") \
583
487
  - mm_AWSSecurityAuditors
584
488
 
585
-
586
- with Cluster('Group: AWSControlTowerAdmins'):
587
-
588
- gg_AWSControlTowerAdmins=Users("AWSControlTowerA\ndmins")
589
- gg_AWSControlTowerAdmins \
590
- - Edge(color="brown", style="dotted", label="Permissions Set") \
591
- - IAMPermissions("AWSOrganizations\nFullAccess")
592
- mm_AWSControlTowerAdmins=[User("velez94@protonma\nil.com"),]
593
- gg_AWSControlTowerAdmins \
594
- - Edge(color="darkgreen", style="dotted", label="Member") \
595
- - mm_AWSControlTowerAdmins
596
-