Skip to content

Commit

Permalink
feat: Switch to using IAMPartialPolicy instead of IAMPolicyMember (#62)
Browse files Browse the repository at this point in the history
* Switch to using IAMPartialPolicy instead of IAMPolicyBinding

* fixed type in role value

* fixed indentation

Co-authored-by: kaariger <kaariger@users.noreply.github.com>
  • Loading branch information
kaariger and kaariger committed Aug 19, 2021
1 parent 1a24e4c commit 395b921
Show file tree
Hide file tree
Showing 14 changed files with 165 additions and 116 deletions.
7 changes: 3 additions & 4 deletions catalog/gitops/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ source-repo 5

```
File APIVersion Kind Name Namespace
cloudbuild-iam.yaml iam.cnrm.cloud.google.com/v1beta1 IAMPolicyMember deployment-repo-cloudbuild-write config-control
cloudbuild-iam.yaml iam.cnrm.cloud.google.com/v1beta1 IAMPolicyMember source-repo-cloudbuild-read config-control
cloudbuild-iam.yaml iam.cnrm.cloud.google.com/v1beta1 IAMPartialPolicy deployment-repo-cloudbuild-write config-control
cloudbuild-iam.yaml iam.cnrm.cloud.google.com/v1beta1 IAMPartialPolicy source-repo-cloudbuild-read config-control
hydration-trigger.yaml cloudbuild.cnrm.cloud.google.com/v1beta1 CloudBuildTrigger source-repo-cicd-trigger config-control
services.yaml serviceusage.cnrm.cloud.google.com/v1beta1 Service cloudbuild.googleapis.com config-control
services.yaml serviceusage.cnrm.cloud.google.com/v1beta1 Service sourcerepo.googleapis.com config-control
Expand All @@ -46,7 +46,7 @@ source-repositories.yaml sourcerepo.cnrm.cloud.google.com/v1beta1 SourceRepo
## Resource References

- [CloudBuildTrigger](https://cloud.google.com/config-connector/docs/reference/resource-docs/cloudbuild/cloudbuildtrigger)
- [IAMPolicyMember](https://cloud.google.com/config-connector/docs/reference/resource-docs/iam/iampolicymember)
- [IAMPartialPolicy](https://cloud.google.com/config-connector/docs/reference/resource-docs/iam/iampartialpolicy)
- [Service](https://cloud.google.com/config-connector/docs/reference/resource-docs/serviceusage/service)
- [SourceRepoRepository](https://cloud.google.com/config-connector/docs/reference/resource-docs/sourcerepo/sourcereporepository)

Expand Down Expand Up @@ -88,4 +88,3 @@ source-repositories.yaml sourcerepo.cnrm.cloud.google.com/v1beta1 SourceRepo
```
kpt live status --output table --poll-until current
```

16 changes: 10 additions & 6 deletions catalog/gitops/cloudbuild-iam.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,34 +13,38 @@
# limitations under the License.
# Provides write access to deployment repo for cloudbuild trigger
apiVersion: iam.cnrm.cloud.google.com/v1beta1
kind: IAMPolicyMember
kind: IAMPartialPolicy
metadata:
name: deployment-repo-cloudbuild-write
namespace: config-control # kpt-set: ${namespace}
annotations:
cnrm.cloud.google.com/blueprint: cnrm/gitops/v0.3.0
cnrm.cloud.google.com/project-id: project-id # kpt-set: ${project-id}
spec:
member: serviceAccount:1234567890123@cloudbuild.gserviceaccount.com # kpt-set: serviceAccount:${project-number}@cloudbuild.gserviceaccount.com
resourceRef:
name: deployment-repo # kpt-set: ${deployment-repo}
apiVersion: sourcerepo.cnrm.cloud.google.com/v1beta1
kind: SourceRepoRepository
role: roles/source.writer
bindings:
- role: roles/source.writer
members:
- member: serviceAccount:1234567890123@cloudbuild.gserviceaccount.com # kpt-set: serviceAccount:${project-number}@cloudbuild.gserviceaccount.com
---
# Provides read access to source repo for cloudbuild trigger
apiVersion: iam.cnrm.cloud.google.com/v1beta1
kind: IAMPolicyMember
kind: IAMPartialPolicy
metadata:
name: source-repo-cloudbuild-read
namespace: config-control # kpt-set: ${namespace}
annotations:
cnrm.cloud.google.com/blueprint: cnrm/gitops/v0.3.0
cnrm.cloud.google.com/project-id: project-id # kpt-set: ${project-id}
spec:
member: serviceAccount:1234567890123@cloudbuild.gserviceaccount.com # kpt-set: serviceAccount:${project-number}@cloudbuild.gserviceaccount.com
resourceRef:
name: source-repo # kpt-set: ${source-repo}
apiVersion: sourcerepo.cnrm.cloud.google.com/v1beta1
kind: SourceRepoRepository
role: roles/source.reader
bindings:
- role: roles/source.reader
members:
- member: serviceAccount:1234567890123@cloudbuild.gserviceaccount.com # kpt-set: serviceAccount:${project-number}@cloudbuild.gserviceaccount.com
7 changes: 3 additions & 4 deletions catalog/gitops/configsync/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@ This package has no sub-packages.
```
File APIVersion Kind Name Namespace
config-management.yaml configmanagement.gke.io/v1 ConfigManagement config-management
configsync-iam.yaml iam.cnrm.cloud.google.com/v1beta1 IAMPolicyMember source-reader-sync-cluster-name-project-id config-control
configsync-iam.yaml iam.cnrm.cloud.google.com/v1beta1 IAMPolicyMember sync-cluster-name config-control
configsync-iam.yaml iam.cnrm.cloud.google.com/v1beta1 IAMPartialPolicy source-reader-sync-cluster-name-project-id config-control
configsync-iam.yaml iam.cnrm.cloud.google.com/v1beta1 IAMPartialPolicy sync-cluster-name config-control
configsync-iam.yaml iam.cnrm.cloud.google.com/v1beta1 IAMServiceAccount sync-cluster-name config-control
```

## Resource References

- [ConfigManagement](https://cloud.google.com/anthos-config-management/docs/configmanagement-fields)
- [IAMPolicyMember](https://cloud.google.com/config-connector/docs/reference/resource-docs/iam/iampolicymember)
- [IAMPartialPolicy](https://cloud.google.com/config-connector/docs/reference/resource-docs/iam/iampartialpolicy)
- [IAMServiceAccount](https://cloud.google.com/config-connector/docs/reference/resource-docs/iam/iamserviceaccount)

## Usage
Expand Down Expand Up @@ -79,4 +79,3 @@ configsync-iam.yaml iam.cnrm.cloud.google.com/v1beta1 IAMServiceAccount sy
```
kpt live status --output table --poll-until current
```

19 changes: 12 additions & 7 deletions catalog/gitops/configsync/configsync-iam.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
# Config Sync GCP ServiceAccount (GSA)
# This GSA can be used to grant Config Sync additional permissions with IAMPolicyMember
# This GSA can be used to grant Config Sync additional permissions with IAMPartialPolicy
apiVersion: iam.cnrm.cloud.google.com/v1beta1
kind: IAMServiceAccount
metadata:
Expand All @@ -26,34 +26,39 @@ spec:
---
# Allow Config Sync Kubernetes ServiceAccount (KSA) to use the Config Sync GSA
apiVersion: iam.cnrm.cloud.google.com/v1beta1
kind: IAMPolicyMember
kind: IAMPartialPolicy
metadata:
name: sync-cluster-name # kpt-set: sync-${cluster-name}
namespace: config-control # kpt-set: ${namespace}
annotations:
cnrm.cloud.google.com/blueprint: cnrm/gitops/configsync/v0.3.0
cnrm.cloud.google.com/project-id: project-id # kpt-set: ${project-id}
spec:
member: serviceAccount:project-id.svc.id.goog[config-management-system/importer] # kpt-set: serviceAccount:${project-id}.svc.id.goog[config-management-system/importer]
resourceRef:
name: sync-cluster-name # kpt-set: sync-${cluster-name}
apiVersion: iam.cnrm.cloud.google.com/v1beta1
kind: IAMServiceAccount
role: roles/iam.workloadIdentityUser
bindings:
- role: roles/iam.workloadIdentityUser
members:
- member: serviceAccount:project-id.svc.id.goog[config-management-system/importer] # kpt-set: serviceAccount:${project-id}.svc.id.goog[config-management-system/importer]
---
# Allow Config Sync GSA to read from CSR repos in the CSR project
apiVersion: iam.cnrm.cloud.google.com/v1beta1
kind: IAMPolicyMember
kind: IAMPartialPolicy
metadata:
name: source-reader-sync-cluster-name-project-id # kpt-set: source-reader-sync-${cluster-name}-${project-id}
namespace: config-control # kpt-set: ${namespace}
annotations:
cnrm.cloud.google.com/blueprint: cnrm/gitops/configsync/v0.3.0
cnrm.cloud.google.com/project-id: project-id # kpt-set: ${project-id}
spec:
member: serviceAccount:sync-cluster-name@project-id.iam.gserviceaccount.com # kpt-set: serviceAccount:sync-${cluster-name}@${project-id}.iam.gserviceaccount.com
member:
resourceRef:
apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1
kind: Project
external: project-id # kpt-set: ${project-id}
role: roles/source.reader
bindings:
- role: roles/source.reader
members:
- member: serviceAccount:sync-cluster-name@project-id.iam.gserviceaccount.com # kpt-set: serviceAccount:sync-${cluster-name}@${project-id}.iam.gserviceaccount.com

0 comments on commit 395b921

Please sign in to comment.