1

[長い、とりとめのない質問をお詫びします。私は、私よりもはるかに知識のある人々からのいくつかの議論/提案を刺激したいと思っています。これが本当にSOに適していない場合は、この種の質問をする場所のヒントを教えてください。]

ASP.NETMVC4アプリがあります。Azure Webロールを使用してホストしています(少なくとも今のところ)。専門の医療面接である私のアプリは、ユーザーから機密情報を収集し、医師や患者が閲覧でき、(暗号化されていない電子メールに添付された暗号化されたPDFファイルを介して)配信できるレポートを作成します。機密データは24時間保持され、医師が戻ってレポートを取得できるようになります。その後、レコードが削除されます(これにより、永続的なストレージからデータが実際に削除されることはありません)。

そのため、機密データの機密を保持するために、セキュリティ境界に関して何を心配する必要があるかについて考え始めています。私は非常に経験豊富なデスクトップアプリ開発者ですが、このWebプログラミング全体に不慣れです。

私が心配する必要がある最初の明白なセキュリティ境界は、サーバーとユーザーの間の通信層です。有効で適切に構成されたSSL証明書があり、ログインしたユーザーを処理するWebサイトのすべてのセクション(インタビューとレポートのワークフローを含む)は、HTTPSエンドポイントを介して動作します。

AzureのSSL実装が正しく、ホスト自体を強化するためにできることやすべきことは何もないと想定/期待しています。

ユーザーの便宜のために、訪問者がhttp://mywebsite.comにアクセスできるようにし、ログインしている場合は[RequiresHttps]のマークが付いたページにリダイレクトします。このHTTPからHTTPSへのリダイレクトは脆弱であることを理解しています。SSLStripのman-in-the-middle攻撃に対して、サーバーは安全なHTTPS接続を認識しますが、警戒しているユーザーはURLがHTTPSではなくHTTPであることに気付くでしょう。この便利な機能を維持する予定ですが、拡張検証証明書を使用することで軽減します。これにより、ほとんどのユーザーに満足のいく緑色のアドレスバーが提供されます。ログインしているユーザーのメインページに、緑色のアドレスバーを確認するようにユーザーに通知するものを配置します。

すべてのCookieが暗号化されるようにASP.NETを構成する方法を理解します。

(Azure展開ウィザードで)リモートデスクトップを有効にしました。これにより、誰かが私のユーザー名とパスワードを把握できる場合に攻撃される可能性のあるポータルが開きます。C'estlavie。

私が心配する必要がある次のセキュリティ境界-そしてこれは私が助けを必要とするところです-許可されていない人がデータベースにアクセスした場合に機密データを保護することです。私のデータベース管理の知識は、接続文字列のコピーと貼り付け、および単純なSQLクエリの記述にかなり限定されています。

私はすべてのデータベースにEntityFrameworkとAzureSQLDatabasesを使用しています。コードに組み込まれたキーを使用して、データエンティティ内の機密データを暗号化します。おそらく、データベース自体は暗号化されており、データベースファイルを入手したばかりの人(Azure SQL DatabasesインターフェイスにはWeb接続を介してアクセスできますが、信頼できるIPアドレスからのみアクセスできます)は、SQLのユーザー名とパスワードを把握してデータ出力。

誰かが私のアプリをだまして機密情報を明らかにする可能性があります。私のワークフローでは、ログインしているユーザーが自分のレコードを読み書きすることしかできません。攻撃者が暗号化された機密データにアクセスするには、暗号化キーを取得するか、コードを呼び出す方法を見つける必要があります。.NETコードを難読化していない。私の実行可能ファイルは安全だと思います。また、データベースのクレデンシャルを含むクリアテキストのweb.configは安全だと思います。 これらは良い仮定ですか?

だから、それは私の初心者の頭脳が私をセキュリティの道に連れて行った限りです。コメントや提案はありますか?間違った仮定をしたり、明らかなことを見落としたりしましたか?

4

2 に答える 2

1

これの多くはAzureとは関係ありません。WindowsAzureの観点からいくつかのポイントを取り上げます。

データの保存:暗号化されたPDFをBLOBストレージに移動することをお勧めします。次に、暗号化されたファイル自体を添付するのではなく、暗号化されたpdfへのリンクを提供できます。さらに、blob(pdfを保存する)をプライベートにして、誰もアクセスできないようにすることができます。次に、共有アクセス署名を作成します。これは基本的に、時間制限のあるアクセス許可を持つ特別な署名付きURLです。次に、たとえば、24時間の読み取りウィンドウを設定できます。このリンクを電子メールで提供すると、次の24時間、ダウンロードして(適切なパスワードを使用して)復号化できます。24時間後、リンクは機能しなくなります。その時点でブロブを削除することもできます(そうです、ブロブは削除されます)。

RDPでは、非常に適切なパスワードを選択する必要があります。RDP以外に、誰かがWebロールインスタンスにアクセスする方法がわかりません。

Windows Azure SQLデータベースでは、外部からアクセスできるようにすることはお勧めしません。WindowsAzureサービスへのアクセスを制限するだけです。Windows Azure SQLデータベースは、データを暗号化しません。また、暗号化されたフィールドをサポートしません。自分で暗号化する必要があります。

あなたが答える必要のある非常に大きな質問:あなたが医療情報をクラウドに保存することは大丈夫ですか?そうすることで、コンプライアンスや法規制に違反していませんか?これについて宿題をして、それを理解する必要があります。Data-in-the-clearは、コンプライアンスの観点から懸念を引き起こすものです(私は弁護士ではないため、ここではアドバイスを提供しません)。Windows Azureを使用すると、署名されたBAAを取得できます。これは、Windows Azureコンピューティングとストレージを使用している場合に、アプリでHIPAA準拠を実現できることを意味します。現在、WindowsAzureSQLデータベースはHIPAAコンプライアンスウィンドウに含まれていません。コンプライアンスの詳細については、WindowsAzureトラストセンターを参照してください。

于 2013-03-10T19:30:47.810 に答える
0

セキュリティで重要なことは、スマートな構成と信頼です。これらは 2 つの異なるものであり、どちらもどのアーキテクチャにも必要です。

テクノロジーに戻ります。

Azure Cloud Services : SSL、https ベースのサイトを使用するとおっしゃいました。これはセキュリティの最初の設定であり、効果的でもあります。これとは別に、ベスト プラクティスに従っていることを確認してください。

Azure SQL データベース: ファイアウォール ルールを使用して、Azure SQL データベースを保護/保護できます。データベースを Azure クラウド サービスに接続するため、Microsoft Azure サービスだけを許可する、つまりクラウドからのみアクセスできるようにすることができます。そのため、データベース全体が外部世界に対して完全に密閉されています。セットアップまたはメンテナンス中に、ローカル IP がデータベースで動作するようにすることができます。その後、そのアクセスを削除して、クラウドのみのモードに戻すことができます。Azure の既定では、暗号化機能はありません。また、強力なパスワードを設定してください。

リモート デスクトップ: セキュリティ証明書を使用する期間を短くします。RD を介してアプリに変更を加えないでください。クリーンな再デプロイを行ってください。RD 経由でアプリに変更を加えると、ファブリック コントローラーがインスタンスをプルダウンして別の場所で再起動する可能性があるため、データ センターのアクティビティ中にすべての変更が破棄されます。

Azure には多くの認定とコンプライアンスが実装されています。これは確かに世界クラスのクラウド サービスです。

于 2013-03-10T19:33:39.680 に答える