Доступ к группе безопасности из другой учетной записи (Lambda, Python) - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь написать одну лямбду, которая автоматически отменяет правила входа для «0.0.0.0/0» во всех наших AWS учетных записях. Для учетной записи, в которой существует лямбда, это довольно просто. Проблема возникает, когда я пытаюсь отменить вход в группу безопасности из другой учетной записи. Отсутствует комбинация 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')
    }

1 Ответ

1 голос
/ 01 апреля 2020

Разобрался, нужно войти в аккаунт с помощью кредитов:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...