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

(aws-iam): (Simplify OpenIdConnectProvider by using CloudFormation resource instead of custom resource lambda) #21197

Open
1 of 2 tasks
Gtofig opened this issue Jul 18, 2022 · 14 comments · May be fixed by #28634
Open
1 of 2 tasks
Labels
@aws-cdk/aws-iam Related to AWS Identity and Access Management effort/medium Medium work item – several days of effort feature-request A feature should be added or improved. p1

Comments

@Gtofig
Copy link
Contributor

Gtofig commented Jul 18, 2022

Describe the feature

OpenIdConnectProvider construct currently creates custom resource lambda and associated resources to create OIDC provider.

However, CloudFormation now supports it out of the box: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-oidcprovider.html

The construct can be significantly simplified by moving to use direct CloudFormation resource.

Use Case

Custom resource lambdas are more complex, harder to understand, and reduce visibility into what's being created. Using CloudFormation resource directly would reduce complexity.

Proposed Solution

Switch to AWS::IAM::OIDCProvider CloudFormation resource

Other Information

No response

Acknowledgements

  • I may be able to implement this feature request
  • This feature might incur a breaking change

CDK version used

2.32.1

Environment details (OS name and version, etc.)

Ubuntu 18

@Gtofig Gtofig added feature-request A feature should be added or improved. needs-triage This issue or PR still needs to be triaged. labels Jul 18, 2022
@github-actions github-actions bot added the @aws-cdk/aws-iam Related to AWS Identity and Access Management label Jul 18, 2022
@kadrach
Copy link
Member

kadrach commented Jul 18, 2022

Related: #20460 and #8607

@rix0rrr rix0rrr added effort/medium Medium work item – several days of effort p1 and removed needs-triage This issue or PR still needs to be triaged. labels Jul 25, 2022
@rix0rrr rix0rrr removed their assignment Jul 25, 2022
@PeterBaker0
Copy link

We received a notification that NodeJS 12 runtime is no longer being supported. This custom Lambda resource uses this runtime so could become an issue in coming months.

"AWS Lambda end of support for Node.js 12"

Is this relevant in prioritising this issue?

Cheers.

@diranged
Copy link

So I came across this issue after learning that the AWS-CDK's OpenIdConnectProvider construct is actually a custom construct and not leveraging the CfnOIDCProvider resource. I was surprised to find that this construct had a pretty old bug that we ran into years ago on our own custom code to do the same thing.

I have a solution here that has worked for us for a while now, and I've just ported it into a CDK-based deploy. I'd be happy to see this code baked into the CDK:

assets/thumbprint-layer/Dockerfile

FROM public.ecr.aws/sam/build-python3.7
COPY requirements.txt ./
RUN python -m pip install -r requirements.txt -t /opt/python
WORKDIR /
ENTRYPOINT [ "/bin/bash" ]

assets/thumbprint-layer/requirements.txt

boto3
pyOpenSSL
awsretry
certifi
cfn_resource_provider

assets/thumbprint-layer/thumprint.py

import certifi, sys, json, logging, os, urllib, ssl, socket, requests, traceback
from OpenSSL import crypto, SSL
from uuid import uuid4
from cfn_resource_provider import ResourceProvider

logging.basicConfig()
logger = logging.getLogger()
logger.setLevel(os.getenv('LOG_LEVEL', 'DEBUG'))

request_schema = {
  '$schema': 'http://json-schema.org/draft-04/schema#',
  'type': 'object',
  'required': ['URL'],
  'properties': {
    'URL': {'type': 'string', 'Description': 'The URL to hit'},
  }
}


class Thumbprint(ResourceProvider):
  def __init__(self):
    super(Thumbprint, self).__init__()
    self.request_schema = request_schema

  @property
  def url(self):
    return self.get('URL')

  @property
  def openid_config(self):
    return requests.get(self.url + '/.well-known/openid-configuration').json()

  @property
  def jwks_tuple(self):
    url = urllib.parse.urlparse(self.openid_config['jwks_uri'])
    return (url.hostname, 443)

  @property
  def root_cert(self):
    host, port = self.jwks_tuple
    context = SSL.Context(method=SSL.TLSv1_2_METHOD)
    context.load_verify_locations(cafile=certifi.where())
    conn = SSL.Connection(context, socket=socket.socket(socket.AF_INET, socket.SOCK_STREAM))
    conn.settimeout(5)
    conn.connect((host, port))
    conn.setblocking(1)
    conn.do_handshake()
    conn.set_tlsext_host_name(host.encode())
    return conn.get_peer_cert_chain()[-1]

  @property
  def thumbprint(self):
    return self.root_cert.digest('sha1').decode('utf-8').replace(':','')

  def create(self):
    try:
      self.physical_resource_id = self.thumbprint
    except Exception as e:
      traceback.print_exc()
      self.physical_resource_id = 'could-not-execute'
      self.fail('Failed to execute: %s' % e)

  def update(self):
    # Updates are not possible. Must delete and re-create. :(
    self.delete()
    self.create()

  def delete(self):
    self.success('no-op')

# This is the lambda handler call... but when we operate locally, see the
# __main__ below.
def handler(request, context):
  return Thumbprint().handle(request, context)

# When testing locally we just gather some data, but make no changes. The point
# of this test (right now) is to verify that we can hit the SSL endpoint, get
# the root certificate information and return it.
if __name__ == '__main__':
  print('Beginning test...  validating command-line usage first...')
  url = sys.argv[1]
  if not url:
      print(f'Usage: {sys.argv[0]} <EKS Cluster OIDC URL>')
      sys.exit(1)

  print(f'Will run test against {url} cluster...')
  request = {
    "RequestType": 'CREATE',
    "ResponseURL": "https://httpbin.org/put",
    "StackId": "arn:aws:cloudformation:us-west-2:EXAMPLE/stack-name/guid",
    "RequestId": "request-%s" % uuid4(),
    "ResourceType": "Custom::Resource",
    "LogicalResourceId": "MyCustomResource",
    "ResourceProperties": {
        "URL": url
    }
  }

  print('Creating Thumbprint() object...')
  thumbprint = Thumbprint()
  thumbprint.set_request(request, {})
  print(f'TEST: root_cert thumbprint = {thumbprint.thumbprint}')

AWS-CDK Resources

    const codeDirectory = Code.fromAsset('assets/thumbprint-layer');
    const thumbprintLayer: LayerVersion = new LayerVersion(this, 'ThumbprintLayer', {
      removalPolicy: RemovalPolicy.DESTROY,
      layerVersionName: scope.stackName,
      code: Code.fromDockerBuild(codeDirectory.path, {
        file: 'Dockerfile',
        platform: Architecture.X86_64.dockerPlatform,
        imagePath: '/opt'
      }),
      compatibleArchitectures: [Architecture.X86_64]
    });
    const handler = new Function(this, 'ThumbprintHandler', {
      runtime: Runtime.PYTHON_3_7,
      code: codeDirectory,
      layers: [thumbprintLayer],
      handler: 'thumbprint.handler'
    });
    handler.node.addDependency(thumbprintLayer);
    const thumbprint = new CustomResource(this, 'Thumbprint', {
      removalPolicy: RemovalPolicy.RETAIN,
      resourceType: 'Custom::Thumbprint',
      serviceToken: handler.functionArn,
      properties: {
        URL: props.cluster.clusterOpenIdConnectIssuerUrl
      }
    });
    thumbprint.node.addDependency(handler);
    new CfnOIDCProvider(this, 'OidcProvider', {
      thumbprintList: [thumbprint.ref],
      clientIdList: ['sts.amazonaws.com'],
      url: props.cluster.clusterOpenIdConnectIssuerUrl
    });

@ramesh82
Copy link

ramesh82 commented Nov 13, 2022

So I came across this issue after learning that the AWS-CDK's OpenIdConnectProvider construct is actually a custom construct and not leveraging the CfnOIDCProvider resource. I was surprised to find that this construct had a pretty old bug that we ran into years ago on our own custom code to do the same thing.

I have a solution here that has worked for us for a while now, and I've just ported it into a CDK-based deploy. I'd be happy to see this code baked into the CDK:

assets/thumbprint-layer/Dockerfile

FROM public.ecr.aws/sam/build-python3.7
COPY requirements.txt ./
RUN python -m pip install -r requirements.txt -t /opt/python
WORKDIR /
ENTRYPOINT [ "/bin/bash" ]

assets/thumbprint-layer/requirements.txt

boto3
pyOpenSSL
awsretry
certifi
cfn_resource_provider

assets/thumbprint-layer/thumprint.py

import certifi, sys, json, logging, os, urllib, ssl, socket, requests, traceback
from OpenSSL import crypto, SSL
from uuid import uuid4
from cfn_resource_provider import ResourceProvider

logging.basicConfig()
logger = logging.getLogger()
logger.setLevel(os.getenv('LOG_LEVEL', 'DEBUG'))

request_schema = {
  '$schema': 'http://json-schema.org/draft-04/schema#',
  'type': 'object',
  'required': ['URL'],
  'properties': {
    'URL': {'type': 'string', 'Description': 'The URL to hit'},
  }
}


class Thumbprint(ResourceProvider):
  def __init__(self):
    super(Thumbprint, self).__init__()
    self.request_schema = request_schema

  @property
  def url(self):
    return self.get('URL')

  @property
  def openid_config(self):
    return requests.get(self.url + '/.well-known/openid-configuration').json()

  @property
  def jwks_tuple(self):
    url = urllib.parse.urlparse(self.openid_config['jwks_uri'])
    return (url.hostname, 443)

  @property
  def root_cert(self):
    host, port = self.jwks_tuple
    context = SSL.Context(method=SSL.TLSv1_2_METHOD)
    context.load_verify_locations(cafile=certifi.where())
    conn = SSL.Connection(context, socket=socket.socket(socket.AF_INET, socket.SOCK_STREAM))
    conn.settimeout(5)
    conn.connect((host, port))
    conn.setblocking(1)
    conn.do_handshake()
    conn.set_tlsext_host_name(host.encode())
    return conn.get_peer_cert_chain()[-1]

  @property
  def thumbprint(self):
    return self.root_cert.digest('sha1').decode('utf-8').replace(':','')

  def create(self):
    try:
      self.physical_resource_id = self.thumbprint
    except Exception as e:
      traceback.print_exc()
      self.physical_resource_id = 'could-not-execute'
      self.fail('Failed to execute: %s' % e)

  def update(self):
    # Updates are not possible. Must delete and re-create. :(
    self.delete()
    self.create()

  def delete(self):
    self.success('no-op')

# This is the lambda handler call... but when we operate locally, see the
# __main__ below.
def handler(request, context):
  return Thumbprint().handle(request, context)

# When testing locally we just gather some data, but make no changes. The point
# of this test (right now) is to verify that we can hit the SSL endpoint, get
# the root certificate information and return it.
if __name__ == '__main__':
  print('Beginning test...  validating command-line usage first...')
  url = sys.argv[1]
  if not url:
      print(f'Usage: {sys.argv[0]} <EKS Cluster OIDC URL>')
      sys.exit(1)

  print(f'Will run test against {url} cluster...')
  request = {
    "RequestType": 'CREATE',
    "ResponseURL": "https://httpbin.org/put",
    "StackId": "arn:aws:cloudformation:us-west-2:EXAMPLE/stack-name/guid",
    "RequestId": "request-%s" % uuid4(),
    "ResourceType": "Custom::Resource",
    "LogicalResourceId": "MyCustomResource",
    "ResourceProperties": {
        "URL": url
    }
  }

  print('Creating Thumbprint() object...')
  thumbprint = Thumbprint()
  thumbprint.set_request(request, {})
  print(f'TEST: root_cert thumbprint = {thumbprint.thumbprint}')

AWS-CDK Resources

    const codeDirectory = Code.fromAsset('assets/thumbprint-layer');
    const thumbprintLayer: LayerVersion = new LayerVersion(this, 'ThumbprintLayer', {
      removalPolicy: RemovalPolicy.DESTROY,
      layerVersionName: scope.stackName,
      code: Code.fromDockerBuild(codeDirectory.path, {
        file: 'Dockerfile',
        platform: Architecture.X86_64.dockerPlatform,
        imagePath: '/opt'
      }),
      compatibleArchitectures: [Architecture.X86_64]
    });
    const handler = new Function(this, 'ThumbprintHandler', {
      runtime: Runtime.PYTHON_3_7,
      code: codeDirectory,
      layers: [thumbprintLayer],
      handler: 'thumbprint.handler'
    });
    handler.node.addDependency(thumbprintLayer);
    const thumbprint = new CustomResource(this, 'Thumbprint', {
      removalPolicy: RemovalPolicy.RETAIN,
      resourceType: 'Custom::Thumbprint',
      serviceToken: handler.functionArn,
      properties: {
        URL: props.cluster.clusterOpenIdConnectIssuerUrl
      }
    });
    thumbprint.node.addDependency(handler);
    new CfnOIDCProvider(this, 'OidcProvider', {
      thumbprintList: [thumbprint.ref],
      clientIdList: ['sts.amazonaws.com'],
      url: props.cluster.clusterOpenIdConnectIssuerUrl
    });

How do you import an existing provider arn using this approach?

@khushail khushail added p1.5 and removed p1 labels May 16, 2023
@otaviomacedo otaviomacedo added p2 and removed p1.5 labels May 22, 2023
@douglasnaphas
Copy link
Contributor

douglasnaphas commented May 27, 2023

If anyone is aware of past situations where a construct moved from being supported via a custom resource, to being supported via a CloudFormation resource, these would be helpful in working on this change.

I am wondering, could the change be made so that apps already using this construct could upgrade without getting their provider resource deleted? Is it a requirement that existing providers not be deleted and re-created? If they are going to be deleted, does this change need to go in an alpha package?

Update: It seems from #22573 and #16014 that the upgrade could be handled with a feature flag.

douglasnaphas added a commit to douglasnaphas/aws-cdk that referenced this issue May 31, 2023
This is part of an attempt to revive
aws#22573, because it's similar to the
anticipated fix for aws#21197.
@douglasnaphas
Copy link
Contributor

@diranged You said the custom resource contains a pretty old bug that you encountered previously. I see that you have posted code that contains a solution, but what was the bug?

@douglasnaphas
Copy link
Contributor

The Custom Resource handler code implements the logic that lets you omit the thumbprints when instantiating your Provider.

The handler code downloads the thumbprint and does some validation on it when a thumbprint is not provided.

I'm not sure how to retain this feature, meaning the ability to omit the thumbprints and have the construct get a thumbprint at deploy time, without leaving the Provider in a Custom Resource.

If we add a feature flag that causes the OIDC Provider to be created via the Cfn resource, for example, IAM_OIDC_PROVIDER_CFN, and someone enables that feature flag, then I think the thumbprint prop would no longer be optional, because we would have no way to fetch the thumbprint. The thumbprintList is a required prop for the Cfn resource.

@diranged
Copy link

@douglasnaphas I believe the bug we ran into was that the custom CFN provider was picking the wrong CA in the CA bundle to generate the thumbprint from. Instead of picking the root, it picks a SubCA. AWS then changed the SubCA cert on us a year or two ago, and our authentication broke at that point.

The code I have here I think is “better” because we’re only using a custom provider to get the thumbprint ID - and nothing else. The rest is native CFN, which means that as the CfnOIDCProvider adds more features (and maybe some day adds the thumbprint picking), we can leverage it and eventually retire the custom CFN code.

@douglasnaphas
Copy link
Contributor

@douglasnaphas I believe the bug we ran into was that the custom CFN provider was picking the wrong CA in the CA bundle to generate the thumbprint from. Instead of picking the root, it picks a SubCA. AWS then changed the SubCA cert on us a year or two ago, and our authentication broke at that point.

The code I have here I think is “better” because we’re only using a custom provider to get the thumbprint ID - and nothing else. The rest is native CFN, which means that as the CfnOIDCProvider adds more features (and maybe some day adds the thumbprint picking), we can leverage it and eventually retire the custom CFN code.

I think it would make sense to break the thumbprint logic out into its own Thumbprint Construct. I have proposed this in the CDK RFC repo.

I don't think the OIDC Provider L1 Cfn resource will ever support thumbprint picking, since the API for OIDC Providers requires the thumbprint to be specified, and L1 Constructs don't have any additional logic. I think it would be better for the thumbprint picking logic to live in the proposed Thumbprint Construct, and for the OIDC Provider L2 Construct to accept a Thumbprint Construct.

@diranged Did #22802 fix the wrong-certificate bug?

@dreamorosi
Copy link
Contributor

Since about a month ago pinning certificate thumbprints with GitHub as OIDC provider is no longer required.

See GitHub's announcement here.

This is what shows up on AWS's side:
image

@GentileFulvio
Copy link

GentileFulvio commented Oct 31, 2023

Any updates on this ? We had to switch to regular cloudformation templates because of this issue

@AlessandroVol23
Copy link

AlessandroVol23 commented Dec 21, 2023

We received a notification that NodeJS 12 runtime is no longer being supported. This custom Lambda resource uses this runtime so could become an issue in coming months.

"AWS Lambda end of support for Node.js 12"

Is this relevant in prioritising this issue?

Cheers.

I'm facing a similar issue. The custom resource Lambda is on node 16 and I'd like to update to node 18 but I'm not sure how to do that since the Lambda is provisioned automatically. Any idea?

WarFox added a commit to WarFox/aws-cdk that referenced this issue Jan 5, 2024
closes aws#21197
OpenIdConnectProvider is implemented as Custom Resource using Lambda. This is not recommended anymore because we have CloudFormation resource that can be used directly.

"AWS::IAM::OIDCProvider" resource is available as "CfnOIDCProvider"
@github-actions github-actions bot added p1 and removed p2 labels Jan 7, 2024
Copy link

github-actions bot commented Jan 7, 2024

This issue has received a significant amount of attention so we are automatically upgrading its priority. A member of the community will see the re-prioritization and provide an update on the issue.

WarFox added a commit to WarFox/aws-cdk that referenced this issue Jan 9, 2024
Mark OpenIdConnectProvider, which uses custom resources with lambda, as
deprecated. The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider
WarFox added a commit to WarFox/aws-cdk that referenced this issue Jan 9, 2024
Mark OpenIdConnectProvider, which uses custom resources with lambda, as
deprecated. The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider
WarFox added a commit to WarFox/aws-cdk that referenced this issue Jan 9, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
WarFox added a commit to WarFox/aws-cdk that referenced this issue Jan 13, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
WarFox added a commit to WarFox/aws-cdk that referenced this issue Jan 13, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
WarFox added a commit to WarFox/aws-cdk that referenced this issue Jan 19, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
WarFox added a commit to WarFox/aws-cdk that referenced this issue Jan 21, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
@WarFox
Copy link

WarFox commented Jan 21, 2024

I have PR ready for review here #28634

It introduces a new OpenIdConnecProvider that uses the CloudFormation resource so that there is no breaking change for the existing construct that uses custom resources.

Looking for suggestions and comments on this. It is my first contribution to aws-cdk. Thank you 🙏

WarFox added a commit to WarFox/aws-cdk that referenced this issue Feb 6, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
WarFox added a commit to WarFox/aws-cdk that referenced this issue Mar 17, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
WarFox added a commit to WarFox/aws-cdk that referenced this issue Mar 17, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
WarFox added a commit to WarFox/aws-cdk that referenced this issue Apr 10, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
WarFox added a commit to WarFox/aws-cdk that referenced this issue Apr 16, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
WarFox added a commit to WarFox/aws-cdk that referenced this issue Apr 21, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
WarFox added a commit to WarFox/aws-cdk that referenced this issue Apr 23, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
WarFox added a commit to WarFox/aws-cdk that referenced this issue Apr 23, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
WarFox added a commit to WarFox/aws-cdk that referenced this issue Apr 24, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
WarFox added a commit to WarFox/aws-cdk that referenced this issue Apr 25, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
WarFox added a commit to WarFox/aws-cdk that referenced this issue Jun 13, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
WarFox added a commit to WarFox/aws-cdk that referenced this issue Jun 13, 2024
IAM is stable in CDK, so we should not introduce breaking changes.

This commit introduces a new version of OIDC provider without introducing breaking changes.

Older iam.OpenIdConnectProvider, which uses custom resources with lambda, is marked as deprecated.

The newly introduced OpenIdConnectProvider2 uses the native CloudFormation resource AWS::IAM::OIDCProvider.

Closes aws#21197
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
@aws-cdk/aws-iam Related to AWS Identity and Access Management effort/medium Medium work item – several days of effort feature-request A feature should be added or improved. p1
Projects
None yet