View a markdown version of this page

向组织授予函数访问权限 - AWS Lambda

向组织授予函数访问权限

如需向 AWS Organizations 组织内全部账户授予权限,建议使用 put-resource-policy,通过 aws:PrincipalOrgID 条件键创建完整 JSON 策略。

重要

使用 put-resource-policy 将替换该资源上所有现有的基于资源的策略。若资源已通过 add-permission 定义了权限,则 put-resource-policy 会覆盖这些权限。进行修改前,请使用 get-resource-policy 获取现有策略。

使用完整 JSON 策略(推荐)

以下示例策略向组织 o-a1b2c3d4e5f 内的全部 AWS 账户授予调用访问权限:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "org-access", "Effect": "Allow", "Principal": "*", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-a1b2c3d4e5f" } } } ] }

将策略保存至名为 policy.json 的文件,然后应用该策略:

aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function \ --policy file://policy.json

借助完整 JSON 策略,您还可拒绝组织内特定账户的访问权限:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-org", "Effect": "Allow", "Principal": "*", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-a1b2c3d4e5f" } } }, { "Sid": "deny-specific-account", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::999888777666:root" }, "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:us-east-2:123456789012:function:my-function", "arn:aws:lambda:us-east-2:123456789012:function:my-function:*" ] } ] }

使用 add-permission

对于简单使用案例,您可将 add-permission 与 principal-org-id 选项搭配使用。以下命令将向组织 o-a1b2c3d4e5f 内的所有用户授予调用访问权限:

aws lambda add-permission \ --function-name my-function \ --statement-id org-access \ --action lambda:InvokeFunction \ --principal * \ --principal-org-id o-a1b2c3d4e5f
注意

在此命令中,Principal 为 *。这意味着组织 o-a1b2c3d4e5f 中的所有用户都获得了函数调用权限。如果您将某个 AWS 账户 或角色指定为 Principal,则只有该主体会获得函数调用权限,但前提是他们也是 o-a1b2c3d4e5f 组织的成员。

有关更多信息,请参阅《IAM 用户指南》中的 aws:PrincipalOrgID。