Skip to main content

GitHub IAM Role

An AWS CDK construct which defines an IAM Role that can be assumed by a GitHub Workflow.

Usage

GitHub OIDC Provider

In order to define the IAM Role, you'll first need to create an OIDC provider for GitHub in your account.

These are the settings for the GitHub OIDC provider. You can create the provider through the AWS IAM console or using the GitHubOidcProvider construct as demonstrated below:

Settings:

  • URL: https://token.actions.githubusercontent.com
  • Client IDs: sigstore
  • Thumbprints: a031c46782e6e6c662c2c87c76da9aa62ccabd8e

Or via CDK:

# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
from cdk_github_role import GitHubOidcProvider
from aws_cdk.core import App, Stack

app = App()
stack = Stack(app, "GitHubOidcProviderStack")
GitHubOidcProvider(stack, "GitHubOidcProvider")

app.synth()

IAM Roles for Repositories

Then, you can create an IAM role that grants a specific GitHub repository certain permissions in the account. Use GitHubOidcProvider.forAccount() to obtain a reference to the singleton provider.

# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
from cdk_github_role import GithubRole

# must exist in advance.
provider = GitHubOidcProvider.for_account()

bar_role = GitHubRole(self, "GitHubFooBarRole",
    provider=provider,
    repository="foo/bar",
    role_name="FooBarGitHubRole"
)

goo_role = GitHubRole(self, "GitHubFooGooRole",
    provider=provider,
    repository="foo/goo",
    role_name="GitHubFooGooRole"
)

# now we can grant it permissions. for example:
bucket.grant_read(bar_role)
bucket.grant_write(goo_role)

To assume this role from a GitHub Workflow, add the aws-actions/configure-aws-credentials GitHub action step to your workflow:

      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@9aaa1daa91b40ce855e24cd45fb39b2ca18aeaf1
        with:
          aws-region: us-east-2
          role-to-assume: arn:aws:iam::123456789100:role/FooBarGitHubRole
          role-session-name: MySessionName

This step will obtain temporary credentials for this role in your AWS account.

Security

See Security Issues for more information.

License

This project is licensed under the Apache-2.0 License.

Metadata

Release files for cdk-github-role 0.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cdk-github-role 0.0.5
File Size Uploaded
cdk-github-role-0.0.5.tar.gz 33.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cdk-github-role 0.0.5
File Interpreter ABI Platform
cdk_github_role-0.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 66.3 kB

Release files / cdk-github-role-0.0.5.tar.gz

Download URL cdk-github-role-0.0.5.tar.gz
Size 33.6 kB
Tags Source
SHA-256 checksum
How to use checksums
b6dd8022169b159cb8ca5fb3100fb2ec1de5be4a11a4daaf4ccba7ca584aa94b
BLAKE2b-256 checksum
How to use checksums
046850dd1bd9173d84cda4307da923a7a78cf88e7c1637ea79fffd8b295805a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.3

Release files / cdk_github_role-0.0.5-py3-none-any.whl

Download URL cdk_github_role-0.0.5-py3-none-any.whl
Size 32.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fe8288cddb18e90f66647f092230470459cbb60fa2f0ccef58608ee897813ae9
BLAKE2b-256 checksum
How to use checksums
770d241f0d8ca93e9ec671dadda810fa7f7106d859b2b5c8f3e305a8391b6e8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.3

Release history Release notifications | RSS feed

This release

0.0.5 This release

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page