|
| 1 | +--- |
| 2 | +title: Access control design with Docker EE Advanced |
| 3 | +description: Learn how to architect multitenancy with Docker Enterprise Edition Advanced. |
| 4 | +keywords: authorize, authentication, users, teams, groups, sync, UCP, role, access control |
| 5 | +redirect_from: |
| 6 | +- /ucp/ |
| 7 | +ui_tabs: |
| 8 | +- version: ucp-3.0 |
| 9 | + orhigher: true |
| 10 | +- version: ucp-2.2 |
| 11 | + orlower: true |
| 12 | +--- |
| 13 | + |
| 14 | +{% if include.ui %} |
| 15 | + |
| 16 | + |
| 17 | +{% if include.version=="ucp-3.0" %} |
| 18 | +This topic is under construction. |
| 19 | + |
| 20 | +{% elsif include.version=="ucp-2.2" %} |
| 21 | +[Collections and grants](index.md) are strong tools that can be used to control |
| 22 | +access and visibility to resources in UCP. |
| 23 | + |
| 24 | +The previous tutorial, [Access Control Design with Docker EE |
| 25 | +Standard](access-control-design-ee-standard.md), describes a fictional company |
| 26 | +called OrcaBank that has designed a resource access architecture that fits the |
| 27 | +specific security needs of their organization. Be sure to go through this |
| 28 | +tutorial if you have not already before continuing. |
| 29 | + |
| 30 | +In this tutorial, OrcaBank's deployment model adds a staging zone. Instead of |
| 31 | +moving developed applications directly in to production, OrcaBank now deploys |
| 32 | +apps from their dev cluster to staging for testing before deploying to |
| 33 | +production. OrcaBank has very stringent security requirements for production |
| 34 | +applications. Its security team recently read a blog post about DevSecOps and is |
| 35 | +excited to implement some changes. Production applications aren't permitted to |
| 36 | +share any physical infrastructure with non-Production infrastructure. |
| 37 | + |
| 38 | +In this tutorial OrcaBank uses Docker EE Advanced features to segment the |
| 39 | +scheduling and access control of applications across disparate physical |
| 40 | +infrastructure. [Node Access Control](access-control-node.md) with EE Advanced |
| 41 | +licensing allows nodes to be placed in different collections so that resources |
| 42 | +can be scheduled and isolated on disparate physical or virtual hardware |
| 43 | +resources. |
| 44 | + |
| 45 | +## Team access requirements |
| 46 | + |
| 47 | +As in the [Introductory Multitenancy Tutorial](access-control-design-ee-standard.md) |
| 48 | +OrcaBank still has three application teams, `payments`, `mobile`, and `db` that |
| 49 | +need to have varying levels of segmentation between them. Their upcoming Access |
| 50 | +Control redesign will organize their UCP cluster in to two top-level collections, |
| 51 | +Staging and Production, which will be completely separate security zones on |
| 52 | +separate physical infrastructure. |
| 53 | + |
| 54 | +- `security` should have visibility-only access across all |
| 55 | + applications that are in Production. The security team is not |
| 56 | + concerned with Staging applications and thus will not have |
| 57 | + access to Staging |
| 58 | +- `db` should have the full set of operations against all database |
| 59 | + applications that are in Production. `db` does not manage the |
| 60 | + databases that are in Staging, which are managed directly by the |
| 61 | + application teams. |
| 62 | +- `payments` should have the full set of operations to deploy Payments |
| 63 | + apps in both Production and Staging and also access some of the shared |
| 64 | + services provided by the `db` team. |
| 65 | +- `mobile` has the same rights as the `payments` team, with respect to the |
| 66 | + Mobile applications. |
| 67 | + |
| 68 | +## Role composition |
| 69 | + |
| 70 | +OrcaBank will use the same roles as in the Introductory Tutorial. An `ops` role |
| 71 | +will provide them with the ability to deploy, destroy, and view any kind of |
| 72 | +resource. `View Only` will be used by the security team to only view resources |
| 73 | +with no edit rights. `View & Use Networks + Secrets` will be used to access |
| 74 | +shared resources across collection boundaries, such as the `db` services that |
| 75 | +are offered by the `db` collection to the other app teams. |
| 76 | + |
| 77 | +{: .with-border} |
| 78 | + |
| 79 | + |
| 80 | +## Collection architecture |
| 81 | + |
| 82 | +The previous tutorial had separate collections for each application team. |
| 83 | +In this Access Control redesign there will be collections for each zone, |
| 84 | +Staging and Production, and also collections within each zone for the |
| 85 | +individual applications. Another major change is that Docker nodes will be |
| 86 | +segmented themselves so that nodes in Staging are separate from Production |
| 87 | +nodes. Within the Production zone every application will also have their own |
| 88 | +dedicated nodes. |
| 89 | + |
| 90 | +The resulting collection architecture takes the following tree representation: |
| 91 | + |
| 92 | +``` |
| 93 | +/ |
| 94 | +├── System |
| 95 | +├── Shared |
| 96 | +├── prod |
| 97 | +│ ├── db |
| 98 | +│ ├── mobile |
| 99 | +│ └── payments |
| 100 | +└── staging |
| 101 | + ├── mobile |
| 102 | + └── payments |
| 103 | +``` |
| 104 | + |
| 105 | +## Grant composition |
| 106 | + |
| 107 | +OrcaBank will now be granting teams diverse roles to different collections. |
| 108 | +Multiple grants per team are required to grant this kind of access. Each of |
| 109 | +the Payments and Mobile applications will have three grants that give them the |
| 110 | +operation to deploy in their production zone, their staging zone, and also the |
| 111 | +ability to share some resources with the `db` collection. |
| 112 | + |
| 113 | +{: .with-border} |
| 114 | + |
| 115 | +## OrcaBank access architecture |
| 116 | + |
| 117 | +The resulting access architecture provides the appropriate physical segmentation |
| 118 | +between Production and Staging. Applications will be scheduled only on the UCP |
| 119 | +Worker nodes in the collection where the application is placed. The production |
| 120 | +Mobile and Payments applications use shared resources across collection |
| 121 | +boundaries to access the databases in the `/prod/db` collection. |
| 122 | + |
| 123 | +{: .with-border} |
| 124 | + |
| 125 | +### DB team |
| 126 | + |
| 127 | +The OrcaBank `db` team is responsible for deploying and managing the full |
| 128 | +lifecycle of the databases that are in Production. They have the full set of |
| 129 | +operations against all database resources. |
| 130 | + |
| 131 | +{: .with-border} |
| 132 | + |
| 133 | +### Mobile team |
| 134 | + |
| 135 | +The `mobile` team is responsible for deploying their full application stack in |
| 136 | +staging. In production they deploy their own applications but utilize the |
| 137 | +databases that are provided by the `db` team. |
| 138 | + |
| 139 | +{: .with-border} |
| 140 | + |
| 141 | +{% endif %} |
| 142 | +{% endif %} |
0 commit comments