如何在多个AWS账户之间有效pipe理AWS资源? 现在,我想:
我应该探索哪些服务? 对于所有这些任务,我已经在1个AWS账户上成功实施了这些任务。
我已经使用AWS开发工具包来获取资源列表并对其执行操作。 但挑战是Lambda,我相信要做到这一点,我需要为所有帐户安装这些function和所有区域的所有CloudWatch警报? 有没有更好的办法?
AWS组织是否可以解决这个问题? 我的帐户目前是正常的AWS根帐户
我正在探索使用CloudFormation将这些Lambda函数部署到所有帐户和地区。 这是最有效的方法吗? 有更好的select吗? 有些地区不支持Lambda,所以这意味着我的追踪只适用于支持它的地区。
您可以尝试使用IAMangular色委托跨多个AWS账户的访问权限。 假设您有一个lambda函数,在办公时间之后或之中停止/启动EC2实例。 这意味着您可以在master帐户(您的1个AWS账户 )中部署lambda,并在其他managed帐户中调用AWS API。 在master帐户中,您已经部署了该function及其IAM master执行angular色。 此angular色允许该function承担在managed帐户中部署的另一个managedangular色,以调用相应的AWS API,例如boto3 ec2 client stop_instances或start_instances方法。 IAM managedangular色允许在managed账户中调用AWS API,并且该function可以使用该API。
下面是IAMangular色(AWS CloudFormation片段)的示例:
"MasterRole": { "Type": "AWS::IAM::Role", "Properties": { "RoleName": "master_role", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "Path": "/", "Policies": [ { "PolicyName": "master_assume_policy", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": [ "*" ] } ] } }, ...
。
"AccountRole": { "Type": "AWS::IAM::Role", "Properties": { "RoleName": "managed_role", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": ">>> ARN_OF_MASTER_ROLE <<<" }, "Action": "sts:AssumeRole" } ] }, "Path": "/", "Policies": [ { "PolicyName": "managed_ec2_policy", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:StopInstances", "ec2:StartInstances", ...
您还需要通过从lambda函数调用AssumeRole API切换到IAM managedangular色。 有一个很好的文档描述这个过程。 总之,您需要通过STS承担IAM managedangular色,这将返回您必要的凭据以调用API。
以下是一些可帮助您了解IAM跨账户授权的链接:
使用IAMangular色委托跨AWS账户的访问
创build一个委派权限的angular色
关于AWS组织,我认为它可以帮助您以更集中的方式managed客户账户。 您可以创buildSCP或服务控制策略,从而集中控制从managed帐户访问AWS服务的级别。 该策略指定用户和angular色可以在帐户中使用的服务和操作。 您还可以使用CloudFormation自动创buildAWS managed帐户,并根据需要进行configuration。 这可能包括创buildIAM用户,angular色,策略等。在AWS博客上有一篇关于它的好文章:
AWS Organizations – 针对多个AWS账户的基于策略的pipe理