6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSリソースベースポリシーでのAWS:SourceIpによるアクセス制御

6
Posted at

1.背景と課題

1.1 背景

AWS上の本番以外の環境では、特定のIPアドレスのみリソースへのアクセスを許可する方針が多く採用されています。

IP制限といえば、Security Group(略:SG)、NetworkACL (略:SG)、 Web Application Firewall(略:WAF)だと思い浮かべます

1.2 課題

1.2.1 Network ACL (NACL)

  • VPC内のサブネット単位で適用するファイアウォール
  • サブネット全体のインバウンド/アウトバウンドトラフィックを制御。(IP許可・拒否が可能)
  • S3, DynamoDB, パブリックLambda等には非対応

1.2.2 Security Group (SG)

  • ネットワークインターフェース単位で適用。(許可のみ)
  • EC2, RDS, ELB, VPC内Lambda, ECS, EFS などで利用
  • VPC外やENIのないサービス(S3, DynamoDB, CloudFront, API Gateway, パブリックLambda, SQS, SNS, SES等)には非対応。
  • AWSコンソールやCLI経由のアクセスは制御できない

1.2.3 Web Application Firewall (WAF)

  • Webアプリへのリクエスト(HTTP/HTTPS)をIPやパターンなどでフィルタリング
  • ALB, CloudFront, API Gateway, App Runnerで利用可能
  • EC2, S3, DynamoDB, パブリックLambda等には非対応
  • 有料

2.提案

AWSはリソースベースポリシーを利用した柔軟なアクセス制御を提供しています

このポリシーでaws:SourceIp条件を指定することで、指定したIPアドレスからのみアクセスを許可・拒否できます

2.1メリット

  • リソースごとにアクセス制御可能。リソース対象が多い (参考)
  • AWSコンソール、CLI、SDK、サービスエンドポイント経由のアクセスも制御できる
  • VPCやENIの有無に依存しない
  • 無料

2.2デメリット

  • 複雑なポリシー設定はミスに注意(アクセス不能や過度な公開のリスク)。

3. 例えば

3.1 S3上のウェブサイト

このケースでは、NACLとSGで適用できません。WAFを使う場合はCloudFrontを組み合わせてS3と連携しますが、料金が発生します。リソースベースポリシーを使えば、CloudFrontやWAFが不要です

自分のIPのみアクセス可能で、それ以外は拒否されます

3.1.1 S3シンプルなウェブサイト作成

※作成手順を見たら開いてください (折畳)
  1. デフォルトな設定でS3バケットを簡単に作成
  2. index.html アップロード
  3. 静的ウェブサイトホスティングを有効にする
    3.1「プロパティ」に入って、静的ウェブサイトホスティングを最低にスクロール
    3.2 「有効にする」のみを設定、他はそのままにする
    Web.png
  4. ポリシーを変更
    4.1 「アクセス許可」に入って
    4.2 ブロックパブリックアクセス (バケット設定)にて、「パブリックアクセスをすべて ブロック」をオフにする
    Sửa quyền.png
    4.3 バケットポリシー 変更

バケットポリシー

※ バケットポリシーもリソースベースポリシーです

  • 全てIPを拒否させますが、私のIPは例外です
  • Denyの発言は最優先
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::trungdq.blog/*"
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::trungdq.blog/*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "xxx.xxx.55.85/32" # 私のIP
                }
            }
        }
    ]
}

3.1.2 デモ

  • そもそも許可IPでアクセス可能
  • hola」といVPN 拡張機能でIPを変更
  • 「403」エラーに出てくる

blog.gif

3.2 AWSコンソールのアクセスを制御

許可IPでAWSコンソールにアクセス許可。逆に、拒否されます。
IAMユーザー、ユーザーグループ、ロールに適用できます

3.1.1 準備

Admin権限ユーザを作成します

※作成手順を見たら開いてください (折畳)
  1. IAM → ユーザー → ユーザー作成

tạo user 1.png

  • 画像のように設定

コンソールアクセスが必要だから、「AWS マネジメントコンソールへのユーザーアクセスを提供する - オプション 」をオンにする

  • Adminstrator Access など権限を付与 

  • 最後にログインURLあり

  • Inline Policyを追加
    tạo user 1.5.png

  • JSON で作成

đổi policy.png

  • Policy詳細は以下

Policy

  • 全てAWSリソースを全てアクションするのを Denyさせる
  • 条件は自分のIP以外
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
            "NotIpAddress": {
                "aws:SourceIp": "xxx.xxx.55.85/32" # 私のIP
            }
        }
    }
}

3.1.1 デモ説明

  • 許可IPで通常のように使用可能

  • hola」といVPN 拡張機能でアメリカIPに変更

  • S3バケット一覧など見られる

  • すぐにログアウトされた
    login roi doi ip.gif

  • アメリカIPのうちにログイン不可

  • VPNを抜けて許可IPでログインできる

loginlai-ezgif.com-video-to-gif-converter.gif

4.参考

最後

最後までご覧いただきありがとう

組織PR (興味なければ飛ばしても良い)

FPTは先端技術を活用したITソリューションとサービスを提供するベトナムの大手企業です。我々はイノベーションと品質を重視し、グローバルなお客様に信頼されるパートナーを得ております。DXをご希望の方は、ぜひFPTをお選びください。

また、大規模なクラウドプロジェクトをご体験の方は、FPT ABCにご応募ください。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?