Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
33
Help us understand the problem. What is going on with this article?
@leomaro7

Amazon VPC エンドポイント の GatewayとInterface

1.GatewayとInterface

下記の通り、VPCエンドポイントの方式には、GatewayとInterfaceがある。Gatewayはs3とdynamodのみ。
image.png

Gateway

VPCのルートテーブルを書き換えてVPCエンドポイントのゲートウェイ経由でAWSのAPIエンドポイントへアクセスする。
ゲートウェイVPCエンドポイントではAWSのAPIへはパブリックIPへ向いており、*アクセス制御はゲートウェイのアクセスポリシーで行います。

[Feb 2, 2021]S3がInterface型にも対応しました。

Interface

サービスのエンドポイントとENIをPrivateLinkと呼ばれるものでリンクされます。
DNSを使ってENIのプライベートIPに<サービス名>.<リージョン>.amazonaws.comのようなAレコードが設定されます。
インターフェイスVPCエンドポイントではENIに対してアクセスするため、アクセス制御はセキュリティグループで行います。

比較

Gateway型 PrivateLink(Interface型)
アクセス制御 エンドポイントポリシー。IAM Policyと同じ構文でアクセス先のリソースを制限可能。 セキュリティグループ。セキュリティグループでアクセス元IP、ポートを制御可能。対象のサービスの特定のリソースへのアクセス制御は不可。
利用料金 無料 有料
冗長性 ユーザー側で意識する必要なし マルチAZで配置するように設定する

詳しくは下記のページが参考になりました。

2.Gateway

ここでは、[com.amazonaws.ap-northeast-1.s3]を選択します。
image.png

エンドポイントにアクセスできるVPCとサブネットを指定します。
ここでは、わざとカスタムで特定のバケットに対し、GetとPutのみ許可するようなポリシーを設定しています。詳細は、Amazon S3 のエンドポイントポリシーの使用
を参考にしてください。

{
  "Statement": [
    {
      "Sid": "Access-to-specific-bucket-only",
      "Principal": "*",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::naata-vpcep",
                   "arn:aws:s3:::naata-vpcep/*"]
    }
  ]
}

image.png

なお、ルートテーブルに以下のとおり、追加されていることがわかります。
image.png

検証してみます。

特定のバケットへのGetとPutのみ許可しているので、これはもちろんアクセスできません。

aws s3 ls --region ap-northeast-1
An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied

下記のとおり、特定のバケットへのputが成功していることがわかります。

aws s3 cp test.txt s3://naata-vpcep
upload: ./test.txt to s3://naata-vpcep/test.txt

3.Interface

ここでは、プライベートサブネットに配置してあるEC2インスタンスから、sshを利用せずセッションマネージャーを利用して接続したいと思います。

エンドポイントは同じように4つ作成すればよい。
com.amazonaws.ap-northeast-1.ssm
com.amazonaws.ap-northeast-1.ssmmessage
com.amazonaws.ap-northeast-1.ec2
com.amazonaws.ap-northeast-1.ec2messages
Systems Manager 用 VPC エンドポイントを作成する

「com.amazonaws.ap-northeast-1.ssm」を選択します。
image.png

VPCエンドポイントを設定するVPCを選択して、ENIを配置するサブネットを選択します。
[プライベート DNS 名を有効にする]で「このエンドポイントで有効にする」にチェックを入れます。
【注意】
「このエンドポイントで有効にする」でチェックを入れている場合、VPCの設定でDNS 解決DNS ホスト名を有効にしておく必要があります。
image.png
ENIに設定するセキュリティグループを選択します。※対象のEC2からHTTPS(443)を受け取れるセキュリティグループとするのが基本です。
image.png

作成されたら、DNS Namesが3つ作成されと思います。
<エンドポイントID>-XXXXXXXX.ssm.<リージョン>.vpce.amazonaws.com
<エンドポイントID>-XXXXXXXX-.ssm.ap-northeast-1.vpce.amazonaws.com
ssm.ap-northeast-1.amazonaws.com
image.png

セッションマネージャを確認し、接続できるか確認してみましょう。
image.png

コマンドを打てるコンソールまでは開いたが、何も反応しない。。。
image.png

そこで、こちらのページにある内容で解決!
セッションマネージャーのログの出力先として設定されている s3やCloudWatch Logsのロググループの設定を確認し、接続することができた。
image.png

33
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
leomaro7
AWS 認定 ソリューションアーキテクト – アソシエイト AWS 認定 SysOps アドミニストレーター – アソシエイト AWS 認定 デベロッパー – アソシエイト AWS 認定 クラウドプラクティショナー Linuc1

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
33
Help us understand the problem. What is going on with this article?