【问题标题】:Accessing security group from another account (Lambda, Python)从另一个账户(Lambda、Python)访问安全组
【发布时间】:2020-07-12 05:10:24
【问题描述】:

我正在尝试编写一个 lambda,它可以自动撤销我们所有 AWS 账户中“0.0.0.0/0”的入口规则。对于存在 lambda 的帐户,这非常简单。当我尝试从另一个帐户撤消对安全组的入口时,就会出现此问题。没有 GroupId、SourceSecurityGroupOwnerId、Filter[{'Name': 'owner-id', 'Values': 'account#'}] 的组合,否则似乎有效,我经常遇到“该组不存在” .就像命令不查看我告诉它的帐户一样。有人有这方面的经验吗?

这是我到目前为止的内容(请忽略注释掉的行,我仍在尝试):

import json
import boto3

ec2 = boto3.client('ec2')
ec2_resources = boto3.resource('ec2')

def lambda_handler(event, context):
    ipPermissions = event['detail']['requestParameters']['ipPermissions']['items'][0]
    fromPort = ipPermissions['fromPort']
    ipProtocol = ipPermissions['ipProtocol']
    toPort = ipPermissions['toPort']
    IpPermissions = [{'FromPort': fromPort, 'IpProtocol': ipProtocol, 'IpRanges': [{'CidrIp': '0.0.0.0/0'}], 'Ipv6Ranges': [{'CidrIpv6': '::/0'}], 'PrefixListIds': [], 'ToPort': toPort, 'UserIdGroupPairs': []}]
    account = event['detail']['userIdentity']['accountId']
    groupId = event['detail']['requestParameters']['groupId']
    print(account)
    #response = ec2.revoke_security_group_ingress(GroupId=groupId,SourceSecurityGroupOwnerId=account)
    response = ec2.revoke_security_group_ingress(GroupId=groupId,IpPermissions=IpPermissions,SourceSecurityGroupOwnerId=account)
    #response = ec2.revoke_security_group_ingress(GroupId=groupId,CidrIp='0.0.0.0/0',SourceSecurityGroupOwnerId=security_group.owner_id)
    #print(response)
    print(json.dumps(event))
    return {
        'statusCode': 200,
        'body': json.dumps('Ingress revoked')
    }

【问题讨论】:

  • 你能举一个 lambda 的例子吗?
  • 添加到原帖@a-abramov

标签: python amazon-web-services aws-lambda


【解决方案1】:

想通了,您需要使用凭据访问该帐户:

app_dev=sts_client.assume_role(RoleArn="arn:aws:iam::123456789012:role/SecurityGroupMonitor", RoleSessionName="AssumeRole")
ACCESS_KEY = app_dev['Credentials']['AccessKeyId']
SECRET_KEY = app_dev['Credentials']['SecretAccessKey']
SESSION_TOKEN = app_dev['Credentials']['SessionToken']
ec2_client = boto3.client('ec2', aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY, aws_session_token=SESSION_TOKEN)

【讨论】:

    猜你喜欢
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2021-10-11
    • 2021-12-24
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多