トランジットゲートウェイ利用におけるアクセスコントロールについて調べてみました。

記事タイトルとURLをコピーする

こんにちは、技術4課の城です。
先日、東京リージョンにリリースされたトランジットゲートウェイですが、検証していたところ、アタッチメントについてサブネットを指定する部分があり、少し気になりました。
どうやら指定したサブネットにENIが作成されているようで、トランジットゲートウェイでのアクセスコントロールに使えないかと思い、調べてみました。

※本記事に記載の内容は2018/12/19時点での内容となります。

サブネットの指定について

AWSドキュメントには下記の記載があり、AZ毎に一つのサブネットを指定する必要があるようです。

For Subnet IDs, select one subnet for each Availability Zone to be used by the transit gateway to route traffic.

トランジットゲートウェイ アタッチメントを作成するとENIが作成される

トランジットゲートウェイとVPCのアタッチする際に指定したサブネットにENIが作成されていました。

aws ec2 describe-network-interfaces \
  --network-interface-ids eni-08a35dc601f9525b3

{
    "NetworkInterfaces": [
        {
            "Ipv6Addresses": [],
            "Description": "Network Interface for Transit Gateway Attachment tgw-attach-0d48f3ef3b8c42603",
            "TagSet": [],
            "Attachment": {
                "DeviceIndex": 1,
                "AttachmentId": "ela-attach-e26232c6",
                "DeleteOnTermination": false,
                "InstanceOwnerId": "amazon-aws",
                "Status": "attached"
            },
            "RequesterId": "942978693842",
            "SourceDestCheck": false,
            "Status": "in-use",
            "SubnetId": "subnet-07c2fbaa545b89e9f",
            "AvailabilityZone": "ap-northeast-1a",
            "PrivateIpAddresses": [
                {
                    "PrivateIpAddress": "172.16.0.46",
                    "Primary": true
                }
            ],
            "Groups": [],
            "InterfaceType": "transit_gateway",
            "PrivateIpAddress": "172.16.0.46",
            "MacAddress": "06:3a:6d:83:50:d4",
            "OwnerId": "************",
            "NetworkInterfaceId": "eni-08a35dc601f9525b3",
            "RequesterManaged": false,
            "VpcId": "vpc-04ff85daf466a2497"
        }
    ]
}

トランジットゲートウェイのアタッチメントに紐づいたENIにセキュリティグループをアタッチして通信制御できるかどうか?

こちらのENIへのセキュリティグループのアタッチはできないようです。
下記のようにセキュリティグループをアタッチしようとしてみましたが、エラーになりました。

aws ec2 modify-network-interface-attribute \
  --network-interface-id eni-08a35dc601f9525b3 \
  --groups sg-0ac1a3070b0924bbd

An error occurred (InternalError) when calling the ModifyNetworkInterfaceAttribute operation (reached max retries: 4): An internal error has occurred

アタッチメントのサブネットのNetwork ACLを利用して通信制御できるか?

ENIが存在するVPC側のCIDRを対象にしたDenyルールについては記載通りアクセス拒否されるのですが、対向側のCIDRを記載したルールについては適用されていないようでした。
トランジットゲートウェイのアタッチメントに紐づいたENIのVPC Flow Logsを確認してみたところ、対向側のIPアドレスは表示されていなかったことから、現時点ではこのような利用方法は難しそうです。
※エッジのEC2のENIで取得したVPC Flow Logsでは送信元が表示されていました。

まとめ

現時点ではトランジットゲートウェイの部分でアクセス制御を行うのは難しそうです。
必要であれば、ルーティング、AWS側であればエッジでのセキュリティグループやNetwork ACL、VPNでオンプレミスに繋ぐのであれば、オンプレミス側のファイアーウォールで適切に設定する必要があるようです。

【参考】
AWS News Blog 「New – Use an AWS Transit Gateway to Simplify Your Network Architecture」
AWSドキュメント
AWS Transit Gateway よくある質問

城 航太 (記事一覧)

サイトリライアビリティエンジニアリング部・CSM課・課長

AWSへの移行、AWSアカウントセキュリティ、ネットワーク広く浅くといった感じです。最近はAmazon WorkSpacesやAmazon AppStream2.0が好きです。APN Ambassador 2019,2020