微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有多个操作的 FederatedPrincipal

如何解决具有多个操作的 FederatedPrincipal

我正在尝试在 aws-cdk 中创建一个 FederatedPrincipal,其中包含多个 Action,如下所示:

enter image description here

目前,我正在 c# 中执行此操作(如下所示)

new FederatedPrincipal("cognito-identity.amazonaws.com",new Dictionary<string,object>
{
    { "ForAnyValue:StringLike",string> { ["cognito-identity.amazonaws.com:amr"] = "authenticated" } },{ "StringEquals",string> { ["cognito-identity.amazonaws.com:aud"] = cfn_identitypool.Ref } }
},"sts:AssumeRoleWithWebIdentity");

如何添加第二个操作 - sts:TagSession

解决方法

目前无法使用高级构造。看到这个仍未解决的问题:https://github.com/aws/aws-cdk/issues/6699

TL;博士

IPrincipal 要求 assumeRoleAction 为字符串。但是你需要的是一个数组。看起来它已被搁置,因为这意味着团队不想引入的破坏 BC 的更改。

我最终得到的是使用低级构造 CfnRole。我使用 TypeScript,但将它移植到 C# 应该很简单。

const authenticatedRole = new iam.CfnRole(this,'AuthenticatedRole',{
    assumeRolePolicyDocument: {
        'Statement': [{
            'Effect': iam.Effect.ALLOW,'Action': ['sts:AssumeRoleWithWebIdentity','sts:TagSession'],'Condition': {
                'StringEquals': {
                    'cognito-identity.amazonaws.com:aud': identityPool.getAtt('Ref')
                },'ForAnyValue:StringLike': {
                    'cognito-identity.amazonaws.com:amr': 'authenticated'
                }
            },'Principal': {
                'Federated': 'cognito-identity.amazonaws.com'
            }
        }]
    }
});

const roleAttachment = new cognito.CfnIdentityPoolRoleAttachment(this,'RoleAttachment',{
    identityPoolId: identityPool.getAtt('Ref').toString(),roles: {
        'authenticated': authenticatedRole.getAtt('Arn'),}
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。