LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

サービス・製品 | 

Amazon Bedrockを活用したWebアプリケーションのセキュアな構成

AIエンジニアリンググループの久冨です。

前回の記事では、Amazon Bedrockサービスの概要とその利用方法について紹介しました。基本的な機能や特徴、セットアップ手順を押さえていただけたかと思います。

今回のテーマは、Amazon Bedrockを活用したWebアプリケーションのセキュアな構成です。生成AIを安全にアプリケーションへ統合するためには、単にモデルを利用するだけでなく、セキュアな環境を構築することが極めて重要です。

この記事では、AWS上に構築した生成AIチャットアプリケーションの構成を基に、具体的な構成例を用いて、安全なシステムの構築方法を詳しく解説します。AWS環境での生成AIの活用を検討されている方や、セキュリティを重視したシステム構築を学びたい方の参考になれば幸いです。

セキュアなシステム構成にするには

今回の構成を考えるにあたって、セキュアなシステムにするための主なポイントを紹介します。

セキュリティの基本ポイント

プライベートサブネットに構築

基本ですが、データベースをプライベートサブネット内に構築します。また、バックエンドアプリとデータベースの通信もプライベート通信で行われるようにします。

IAMロールの使用

アプリケーションから各AWSサービスとのアクセス権限は、アクセスキーではなくIAMロールで付与するようにします。これにより、アクセスキーの管理や漏えいのリスクを回避します。

AWS PrivateLinkの使用

前回の記事でも紹介しましたが、アプリケーションからAmazon Bedrockなど各AWSサービスとの通信をPrivateLink経由で行うようにします。通信がインターネット経由ではなくなるため、データ漏えいのリスクを抑えられます。

AWS WAFの使用

社内ネットワークからのみアクセスできるようにIP制限を行い、社員のみ利用できるようにします。

AWS Secrets Managerの使用

環境変数をAWS Secrets Managerで暗号化し保存することで、データ漏えいのリスクを抑えられます。

システム構成の詳細

今回作成したチャットアプリの構成は以下になります。

チャットアプリの構成

主なサービスについて紹介していきます。

AWS App Runner

アプリケーションをコンテナで動かしています。Amazon ECRにあるコンテナイメージから取得して動作します。フロントエンド用とバックエンド用で2つのApp Runnerを設定しています。

App RunnerにVPC Connectorの設定を行うことで、アウトバウンド通信をプライベートサブネット内から行うことが可能で、これによりデータベース等との通信をプライベートで行います。

また、WAFを設定し社内IPからのみアクセス許可しています。

Amazon Aurora PostgreSQL

チャット履歴などを保管するためのデータベースです。プライベートサブネットにデプロイしています。

AWS PrivateLink(VPC Endpoints)

主にアプリケーションから呼び出すAmazon BedrockやRAG用のKendra、ファイル保管用のS3に対して設定し、プライベート通信できるようにしています。

EC2

管理用のマシンとして構築して、インバウンド通信は社内ネットワークからのSSHのみ許可しています。管理者はSSH経由で接続し、ECRにコンテナイメージのアップロード等を行います。

開発時の注意ポイント

今回のようなAmazon Bedrockを活用したWebアプリケーションを開発する際、3つのポイントに注意する必要があります。

  1. NAT Gatewayの利用
  2. App Runnerの環境変数設定
  3. Amazon BedrockのPrivateLink設定

NAT Gatewayの利用

App RunnerでVPC Connectorを使用する場合、インターネット通信を行うには、NAT Gatewayを経由する設定が必要です。

App Runnerの環境変数設定

App Runnerの環境変数にはSecrets Managerの参照を指定することが可能です。以下のように参照用の書き方で指定する必要があります。

arn:aws:secretsmanager:{リージョン名}:{アカウントID}:secret:{シークレット名}:{シークレットキー}::

Amazon BedrockのPrivateLink設定

Amazon Bedrock関連のPrivateLinkはbedrockやbedrock-runtime等がありますが、モデルの実行はbedrock-runtimeなので、こちらを使用する必要があります。

また、別リージョンのAWSサービスのPrivateLinkを作成する場合、VPCピアリングなどの追加設定が必要です。特にAmazon Bedrockはリージョンによって使えるAIモデルが違うので、別リージョンのモデルを使用する場合はこの設定が不可欠です。

なお、当初はこの設定を行う予定でしたが、2024年8月に東京リージョンでClaude 3.5 Sonnetが利用可能になったため、今回の構成ではクロスリージョン設定は不要となりました。

実際の動作と画面紹介

こちらの構成で動かしたチャットアプリの実際の画面を紹介します。

チャットアプリの画面

このように「Amazon Bedrockとは何ですか?」という質問に対して、回答を返してくれています。

さいごに

今回の記事では、AWS上で構築した生成AIチャットアプリケーションの構成を紹介しました。既存のAWSサービスとAmazon Bedrockサービスを用いることで、AWS上にセキュアな生成AIアプリケーションを構築できます。

また、ラックでは社内向けにセキュアな生成AIチャットアプリの開発・導入支援を行っています。社内情報の漏えいなどの懸念がある場合でも安心して利用いただけるよう、万全のセキュリティ対策を提供しています。社内で生成AIチャットの導入を検討されている方は、ぜひお気軽にご相談ください。

プロフィール

久冨 峻介

久冨 峻介
Azure OpenAIを主軸とした生成AIアプリケーションの開発を行っています。また、クラウドサービス全般に関心を持ち、資格取得を通じて技術を磨いています。生成AIやクラウドサービスに関する情報発信を行っていきます。

「AIソリューション」に関するお問い合わせ

この記事は役に立ちましたか?

はい いいえ

関連記事

LAC WATCH

関連記事をご紹介します

  • AIモデルを簡単に構築・デプロイできるAmazon Bedrockの概要と利用方法

  • 複数のAIモデルを連携させる「AIオーケストレーション」の実例と可能性

  • 生成AIを拡張する注目の技術、AIエージェントとは