@@ -34,7 +34,7 @@ The table below shows a comparison of different release types:
3434Dev release allows publishing artifacts temporarily for testing purposes:
3535you push your changes to the feature branch, the branch name becomes this dev-release version:
3636- SemVer is _ not_ generated
37- - no automated pushes, so no need for PAT
37+ - no automated git pushes, so no need for PAT
3838- no git tags created, files in branch addressable by branch name
3939- ` / ` gets replaced with ` - ` , so branch ` feature/login ` gives version ` feature-login `
4040- parameter ` dev-branch-prefix ` (default value is ` feature/ ` ) enforces branch naming for dev releases.
@@ -113,14 +113,18 @@ Artifact types that support dev-release:
113113
114114# # Security
115115
116+ _Note : here we assume you use a centralized AWS account for storing artifacts: files in S3, images in ECR
117+ and (less popular) software packages in CodeArtifact. Lets call such account a Distribution or "Dist" account.
118+ You create and store an artifact once (in the Dist account) and then deploy/use in any workload (dev, test, prod) account_
119+
116120Dev-release mode brings self-service capabilities but also brings security risks
117121
118122_You can't guarantee dev-release security if anybody can assume your 'ci/publisher' role.
119123Or if anybody can use powerful GH PAT to make arbitrary Git changes and then run a malicious workflow on the main branch.
120124In this section we assume you already have a secure GitHub setup and AWS authorization, see [Authorization and security](../authorization.md)_
121125
122126Now lets focus on risks coming specifically from dev-release. Developers may try to use dev-release workflow to :
123- 1. _Create_ unverified artifact that looks like normal
127+ 1. _Create_ an unverified artifact that looks like normal
1241282. _Update_ (override) existing production artifact
1251293. _Delete_ production artifact
126130
@@ -155,7 +159,7 @@ For `ci/publisher` role you might think you need to trust only protected branche
155159But in GitHub if a workflow uses an environment — it takes precedence in OIDC token,
156160so on AWS side instead of "trust main branch" you would need to configure "trust release environment" type of trust policy.
157161See [terraform-aws-ci-publisher](https://github.com/agilecustoms/terraform-aws-ci-publisher) for trust policy examples.
158- See [GitHub Authorization](../authorization.md#github-authorization-and-security) why environment is needed in the first place
162+ See [GitHub Authorization](../authorization.md#github-authorization-and-security) why GH " environment" is needed in the first place
159163
160164# # Risk analysis
161165
@@ -179,7 +183,7 @@ What can a malicious developer do?
179183
180184# ## S3 Risks
181185
182- Feature branch name is used as suffix for dev-release artifacts, so `ci/publisher-dev` can only put objects at path `mycompany-dist/*/feature*`
186+ Feature branch name is used as suffix for dev-release artifacts, so `ci/publisher-dev` can only put objects at path `mycompany-dist/*/feature*`.
183187Imagine a software product which release consists of multiple files like this :
184188` ` `
185189<bucket>/myservice/v1.2.3/
0 commit comments