reverse-diagrams 0.2.5__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/.github/workflows/publish-to-test-pypi.yml +117 -0
  2. reverse_diagrams-1.0.0/.pre-commit-config.yaml +38 -0
  3. reverse_diagrams-1.0.0/LICENSE +13 -0
  4. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/PKG-INFO +36 -24
  5. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/README.md +22 -0
  6. reverse_diagrams-1.0.0/diagrams/code/graph_org.py +86 -0
  7. {reverse_diagrams-0.2.5/docs → reverse_diagrams-1.0.0/diagrams/code}/graph_sso.py +13 -15
  8. {reverse_diagrams-0.2.5/docs → reverse_diagrams-1.0.0/diagrams/code}/graph_sso_complete.py +0 -108
  9. reverse_diagrams-1.0.0/diagrams/code/iam_identity_center.png +0 -0
  10. reverse_diagrams-1.0.0/diagrams/code/organizations-state.png +0 -0
  11. reverse_diagrams-1.0.0/diagrams/code/sso-state.png +0 -0
  12. reverse_diagrams-1.0.0/diagrams/json/account_assignments.json +363 -0
  13. reverse_diagrams-1.0.0/diagrams/json/groups.json +87 -0
  14. reverse_diagrams-1.0.0/diagrams/json/organizations.json +112 -0
  15. reverse_diagrams-1.0.0/organizations-state.png +0 -0
  16. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/pyproject.toml +8 -11
  17. reverse_diagrams-1.0.0/src/aws/describe_identity_store.py +263 -0
  18. reverse_diagrams-1.0.0/src/aws/describe_organization.py +157 -0
  19. reverse_diagrams-1.0.0/src/aws/describe_sso.py +169 -0
  20. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/src/banner/banner.py +7 -2
  21. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/src/dgms/graph_mapper.py +76 -32
  22. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/src/dgms/graph_template.py +4 -4
  23. reverse_diagrams-1.0.0/src/export_report/export_csv.py +5 -0
  24. reverse_diagrams-1.0.0/src/reports/__init__.py +0 -0
  25. reverse_diagrams-1.0.0/src/reports/save_results.py +24 -0
  26. reverse_diagrams-1.0.0/src/reverse_diagrams.py +325 -0
  27. reverse_diagrams-1.0.0/src/version.py +2 -0
  28. reverse_diagrams-1.0.0/sso-state.png +0 -0
  29. reverse_diagrams-1.0.0/test3.py +6 -0
  30. reverse_diagrams-0.2.5/LICENSE +0 -21
  31. reverse_diagrams-0.2.5/docs/graph_org.py +0 -8
  32. reverse_diagrams-0.2.5/src/aws/describe_identity_store.py +0 -140
  33. reverse_diagrams-0.2.5/src/aws/describe_organization.py +0 -102
  34. reverse_diagrams-0.2.5/src/aws/describe_sso.py +0 -56
  35. reverse_diagrams-0.2.5/src/export_report/export_csv.py +0 -4
  36. reverse_diagrams-0.2.5/src/reverse_diagrams.py +0 -169
  37. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/.gitignore +0 -0
  38. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/__init__.py +0 -0
  39. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/docs/images/organizations-state-copy.png +0 -0
  40. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/iam_identity_center.png +0 -0
  41. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/src/__init__.py +0 -0
  42. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/src/aws/__init__.py +0 -0
  43. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/src/banner/__init__.py +0 -0
  44. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/src/dgms/__init__.py +0 -0
  45. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/test.py +0 -0
  46. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/test2.py +0 -0
  47. {reverse_diagrams-0.2.5 → reverse_diagrams-1.0.0}/testdata.txt +0 -0
@@ -0,0 +1,117 @@
1
+ name: Publish Python 🐍 distribution 📦 to PyPI and TestPyPI
2
+
3
+ on: push
4
+
5
+ jobs:
6
+ build:
7
+ name: Build distribution 📦
8
+ runs-on: ubuntu-latest
9
+
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+ - name: Set up Python
13
+ uses: actions/setup-python@v4
14
+ with:
15
+ python-version: "3.x"
16
+ - name: Install pypa/build
17
+ run: >-
18
+ python3 -m
19
+ pip install
20
+ build
21
+ --user
22
+ - name: Build a binary wheel and a source tarball
23
+ run: python3 -m build
24
+ - name: Store the distribution packages
25
+ uses: actions/upload-artifact@v3
26
+ with:
27
+ name: python-package-distributions
28
+ path: dist/
29
+
30
+ publish-to-pypi:
31
+ name: >-
32
+ Publish Python 🐍 distribution 📦 to PyPI
33
+ if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
34
+ needs:
35
+ - build
36
+ runs-on: ubuntu-latest
37
+ environment:
38
+ name: pypi
39
+ url: https://pypi.org/p/reverse-diagrams # Replace reverse-diagrams with your PyPI project name
40
+ permissions:
41
+ id-token: write # IMPORTANT: mandatory for trusted publishing
42
+
43
+ steps:
44
+ - name: Download all the dists
45
+ uses: actions/download-artifact@v3
46
+ with:
47
+ name: python-package-distributions
48
+ path: dist/
49
+ - name: Publish distribution 📦 to PyPI
50
+ uses: pypa/gh-action-pypi-publish@release/v1
51
+
52
+ github-release:
53
+ name: >-
54
+ Sign the Python 🐍 distribution 📦 with Sigstore
55
+ and upload them to GitHub Release
56
+ needs:
57
+ - publish-to-pypi
58
+ runs-on: ubuntu-latest
59
+
60
+ permissions:
61
+ contents: write # IMPORTANT: mandatory for making GitHub Releases
62
+ id-token: write # IMPORTANT: mandatory for sigstore
63
+
64
+ steps:
65
+ - name: Download all the dists
66
+ uses: actions/download-artifact@v3
67
+ with:
68
+ name: python-package-distributions
69
+ path: dist/
70
+ - name: Sign the dists with Sigstore
71
+ uses: sigstore/gh-action-sigstore-python@v1.2.3
72
+ with:
73
+ inputs: >-
74
+ ./dist/*.tar.gz
75
+ ./dist/*.whl
76
+ - name: Create GitHub Release
77
+ env:
78
+ GITHUB_TOKEN: ${{ github.token }}
79
+ run: >-
80
+ gh release create
81
+ '${{ github.ref_name }}'
82
+ --repo '${{ github.repository }}'
83
+ --notes ""
84
+ - name: Upload artifact signatures to GitHub Release
85
+ env:
86
+ GITHUB_TOKEN: ${{ github.token }}
87
+ # Upload to GitHub Release using the `gh` CLI.
88
+ # `dist/` contains the built packages, and the
89
+ # sigstore-produced signatures and certificates.
90
+ run: >-
91
+ gh release upload
92
+ '${{ github.ref_name }}' dist/**
93
+ --repo '${{ github.repository }}'
94
+
95
+ publish-to-testpypi:
96
+ name: Publish Python 🐍 distribution 📦 to TestPyPI
97
+ needs:
98
+ - build
99
+ runs-on: ubuntu-latest
100
+
101
+ environment:
102
+ name: testpypi
103
+ url: https://test.pypi.org/p/reverse-diagrams
104
+
105
+ permissions:
106
+ id-token: write # IMPORTANT: mandatory for trusted publishing
107
+
108
+ steps:
109
+ - name: Download all the dists
110
+ uses: actions/download-artifact@v3
111
+ with:
112
+ name: python-package-distributions
113
+ path: dist/
114
+ - name: Publish distribution 📦 to TestPyPI
115
+ uses: pypa/gh-action-pypi-publish@release/v1
116
+ with:
117
+ repository-url: https://test.pypi.org/legacy/
@@ -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,42 +1,32 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reverse_diagrams
3
- Version: 0.2.5
4
- Summary: Continuous Documentation Tool - Documentation as Code Tool -
5
- 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
6
5
  Project-URL: Homepage, https://github.com/velez94/reverse_diagrams
7
6
  Project-URL: Bug Tracker, https://github.com/velez94/reverse_diagrams/issues
8
7
  Author-email: Alejandro Velez <avelez@labvel.io>
9
- License: MIT License
8
+ License: Copyright [2024] [Alejandro Velez]
10
9
 
11
- 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
12
13
 
13
- Permission is hereby granted, free of charge, to any person obtaining a copy
14
- of this software and associated documentation files (the "Software"), to deal
15
- in the Software without restriction, including without limitation the rights
16
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17
- copies of the Software, and to permit persons to whom the Software is
18
- furnished to do so, subject to the following conditions:
14
+ http://www.apache.org/licenses/LICENSE-2.0
19
15
 
20
- The above copyright notice and this permission notice shall be included in all
21
- copies or substantial portions of the Software.
22
-
23
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29
- 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.
30
21
  License-File: LICENSE
31
- Classifier: License :: OSI Approved :: MIT License
32
22
  Classifier: Operating System :: OS Independent
33
23
  Classifier: Programming Language :: Python :: 3
34
24
  Requires-Python: >=3.8
35
25
  Requires-Dist: boto3>=1.26.44
36
26
  Requires-Dist: colorama>=0.4.4
37
- Requires-Dist: diagrams>=0.22.0
27
+ Requires-Dist: diagrams>=0.23.4
38
28
  Requires-Dist: emoji>=2.2.0
39
- Requires-Dist: jsonschema>=3.2.0
29
+ Requires-Dist: rich>=13.7.0
40
30
  Description-Content-Type: text/markdown
41
31
 
42
32
  <!-- START doctoc generated TOC please keep comment here to allow auto update -->
@@ -157,3 +147,25 @@ reverse_diagrams -c aws -p my-profile -i -r us-east-2
157
147
  reverse_diagrams -c aws -p my-profile -o -i -r us-east-2
158
148
  ```
159
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
-