Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update readme with workload identity based authentication for GCR and GAR #112

Merged
merged 1 commit into from
Feb 3, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 92 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ name: ci

on:
push:
branches: master
branches: main

jobs:
login:
Expand All @@ -64,7 +64,7 @@ name: ci

on:
push:
branches: master
branches: main

jobs:
login:
Expand Down Expand Up @@ -92,7 +92,7 @@ name: ci

on:
push:
branches: master
branches: main

jobs:
login:
Expand All @@ -118,7 +118,7 @@ name: ci

on:
push:
branches: master
branches: main

jobs:
login:
Expand All @@ -142,6 +142,45 @@ jobs:
> Google Container Registry, use the information [on this page](https://cloud.google.com/artifact-registry/docs/transition/transition-from-gcr)
> to learn about transitioning to Google Artifact Registry.

You can use either workload identity federation based keyless authentication or service account based authentication.

#### Workload identity federation based authentication

Configure the workload identity federation for github actions in gcloud (for steps, [refer here](https://github.com/google-github-actions/auth#setting-up-workload-identity-federation)). In the steps, your service account should the ability to push to GCR. Then use google-github-actions/auth action for authentication using workload identity like below:

```yaml
name: ci

on:
push:
branches: main

jobs:
login:
runs-on: ubuntu-latest
steps:
- id: 'auth'
name: 'Authenticate to Google Cloud'
uses: 'google-github-actions/auth@v0'
with:
token_format: 'access_token'
workload_identity_provider: '<workload_identity_provider>'
service_account: '<service_account>'

- name: Login to GCR
uses: docker/login-action@v1
with:
registry: gcr.io
username: oauth2accesstoken
password: ${{ steps.auth.outputs.access_token }}
```

> Replace `<workload_identity_provider>` with configured workload identity provider. For steps to configure, [refer here](https://github.com/google-github-actions/auth#setting-up-workload-identity-federation).

> Replace `<service_account>` with configured service account in workload identity provider which has access to push to GCR

#### Service account based authentication

Use a service account with the ability to push to GCR and [configure access control](https://cloud.google.com/container-registry/docs/access-control).
Then create and download the JSON key for this service account and save content of `.json` file
[as a secret](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets-for-a-repository)
Expand All @@ -152,7 +191,7 @@ name: ci

on:
push:
branches: master
branches: main

jobs:
login:
Expand All @@ -169,6 +208,47 @@ jobs:

### Google Artifact Registry (GAR)

You can use either workload identity federation based keyless authentication or service account based authentication.

#### Workload identity federation based authentication

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: I would prefer if WIF was first since it's the preferred method

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated


Configure the workload identity federation for github actions in gcloud (for steps, [refer here](https://github.com/google-github-actions/auth#setting-up-workload-identity-federation)). In the steps, your service account should the ability to push to GAR. Then use google-github-actions/auth action for authentication using workload identity like below:

```yaml
name: ci

on:
push:
branches: main

jobs:
login:
runs-on: ubuntu-latest
steps:
- id: 'auth'
name: 'Authenticate to Google Cloud'
uses: 'google-github-actions/auth@v0'
with:
token_format: 'access_token'
workload_identity_provider: '<workload_identity_provider>'
service_account: '<service_account>'

- name: Login to GAR
uses: docker/login-action@v1
with:
registry: <location>-docker.pkg.dev
username: oauth2accesstoken
password: ${{ steps.auth.outputs.access_token }}
```
> Replace `<workload_identity_provider>` with configured workload identity provider

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see this defined above

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed


> Replace `<service_account>` with configured service account in workload identity provider which has access to push to GCR
dineshba marked this conversation as resolved.
Show resolved Hide resolved

> Replace `<location>` with the regional or multi-regional [location](https://cloud.google.com/artifact-registry/docs/repo-organize#locations)
> of the repository where the image is stored.

#### Service account based authentication

Use a service account with the ability to push to GAR and [configure access control](https://cloud.google.com/artifact-registry/docs/access-control).
Then create and download the JSON key for this service account and save content of `.json` file
[as a secret](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets-for-a-repository)
Expand All @@ -179,7 +259,7 @@ name: ci

on:
push:
branches: master
branches: main

jobs:
login:
Expand Down Expand Up @@ -208,7 +288,7 @@ name: ci

on:
push:
branches: master
branches: main

jobs:
login:
Expand All @@ -231,7 +311,7 @@ name: ci

on:
push:
branches: master
branches: main

jobs:
login:
Expand All @@ -258,7 +338,7 @@ name: ci

on:
push:
branches: master
branches: main

jobs:
login:
Expand Down Expand Up @@ -291,7 +371,7 @@ name: ci

on:
push:
branches: master
branches: main

jobs:
login:
Expand Down Expand Up @@ -325,7 +405,7 @@ name: ci

on:
push:
branches: master
branches: main

jobs:
login:
Expand All @@ -351,7 +431,7 @@ name: ci

on:
push:
branches: master
branches: main

jobs:
login:
Expand Down