1
0

AWS Verified Accessで実現するゼロトラスト

Posted at

導入

ゼロトラストの基本原則について

  • AWS でのゼロトラストでは、AWSでゼロトラストを構築するための基本原則について、以下3点をあげています。
  1. 可能な場合は、ID 機能とネットワーク機能を併用します。→Verified Accessであれば、IAM Identity CenterOpenID Connectとの統合により、IDとネットワークの併用によるアクセス制御ができそうです。
  2. 特定のユースケースから逆算して作業する→Verified Accessは主に、組織内部アプリケーションへのアクセス制御用途で採用されると思いますが、ポリシーの例等を参考にした、組織のニーズ・ユースケースを踏まえたアクセスポリシー設計が肝になりそうです
  3. システムとデータの価値に応じてゼロトラストを適用します→ゼロトラストに限らず、セキュリティ対策の目的はリスクを許容可能な程度にコントロールすることであり、費用対効果を無視した過剰なセキュリティ対策は避ける必要があります。

AWS Verified Accessの構築

image.png

IAM Identity Centerの有効化

内部アプリケーションの構築

  • プライベートサブネット上にLambda関数を作成します。
def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'headers': {'Content-Type': 'text/html'},
        'body': '<p>Access Allowed!!!</p>'
    }
  • 内部用ALB向けにオレオレ証明書を作成し、ACMにインポートします。
# 秘密鍵の作成
openssl genrsa 2048 > server.key

# CSRの作成
openssl req -new -key server.key > server.csr
# CSRの確認
openssl req -in server.csr -text

# オレオレ証明証の作成
openssl x509 -days 3650 -req -sha256 -signkey server.key < server.csr > server.crt
  • ALBのターゲットグループを作成し、先程作成したLambda関数をターゲットとして指定します。
    スクリーンショット 2023-10-10 22.52.44.png

  • プライベートサブネット上に内部用ALBを作成し、先程作成したターゲットグループを紐づけます。

  • 内部用ALB向けに、Route53のプライベートホストゾーンにレコードを作成します。

    • レコードタイプ: A
    • エイリアス: 有効化
    • トラフィックのルーティング: 先程作成したALBを指定

Verified Accessインスタンスと信頼プロバイダーを作成する

  • VPCコンソールにアクセスし、ナビゲーションペインからVerified Access インスタンスを選択します。

  • Verified Accessインスタンスを作成を押下し、インスタンスを作成します。
    スクリーンショット 2023-10-10 22.57.37.png

  • インスタンス作成画面でVerified Access 信頼プロバイダーを作成を押下して、別タブで信頼プロバイダーを作成します。
    スクリーンショット 2023-10-10 23.06.09.png

  • 元のタブに戻り、先ほど作成した信頼プロバイダーをアタッチして、インスタンスを作成します。スクリーンショット 2023-10-10 23.07.05.png

Verified Accessグループを作成する

  • ナビゲーションペインからVerified Access グループを選択し、Verified Access グループを作成を押下します。
  • 先程作成したインスタンスをアタッチします。
  • ポリシーには無条件のアクセス許可を設定します。
permit(principal,action,resource) when {true};

スクリーンショット 2023-10-10 23.12.49.png

Verified Accessエンドポイントを作成する

  • 事前準備として、

    • Verified Accessエンドポイント用SGを作成します。
      • 自身のグローバルIPアドレスからのインバウンドHTTPS通信のみを許可するように設定しました。
    • Verified Accessエンドポイント用パブリック証明書をACMで作成します。(自身が持つパブリックなカスタムドメインに対して、エンドポイント用サブドメインを切る必要があります)
  • ナビゲーションペインからVerified Access エンドポイントを選択し、Verified Access エンドポイントを作成を押下します。

    • アプリケーションドメイン: 自身が持つカスタムドメインに対して、サブドメインhogeを切りました。
    • ドメイン証明書のARN: 先程作成したACMのパブリック証明書を指定しました。
      スクリーンショット 2023-10-10 23.51.31.png
      スクリーンショット 2023-10-10 23.54.19.png
  • エンドポイントドメインをカスタムドメインのホストゾーンにCNAMEとして登録します。
    スクリーンショット 2023-10-11 0.35.25.png

動作確認

  • Verified Access エンドポイントのアプリケーションドメインに対して、Webブラウザからアクセスします。
    スクリーンショット 2023-10-11 0.42.29.png
  • サインインすると、無事Lambda関数が実行されました!
    image.png

最後に

  • 今回の記事では、AWS Verified Accessを実際に構築してみました。
  • 次回以降の記事では、(ゼロトラストつながりで)NIST SP800-207 ゼロトラスト・アーキテクチャの解説や、アクセスポリシーの設計についてDeepDiveできればと思います。

注意事項

  • 本記事は万全を期して作成していますが、お気づきの点がありましたら、ご連絡よろしくお願いします。
  • なお、本記事の内容を利用した結果及び影響について、筆者は一切の責任を負いませんので、予めご了承ください。
1
0
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
1
0