ketyiaの学んだこと議事録

このサイトでは学んだことを記事にまとめていきます

ASP.NETについて勉強⑨ ~セキュリティデザイン~

ASP.NETについて勉強⑨ ~セキュリティデザイン~ かわいい


こんばんは!
今、C#ASP.NETについて学んでいますので、アウトプットで記事にまとめていきます!!

今回はセキュリティデザインについてまとめていきます。

Platform Architecture Guidance(PAG)

CDDG-PAG (Platform Architecture Guidance)は、クラウド環境のガイダンス、原則、パターン、ガードレールを確立し、維持するためのフレームワークです。よく設計されたクラウド環境は、実装を加速し、リスクを減らし、クラウドの採用を推進するのに役立ちます。

CDDG-PAGは、組織全体でエンタープライズ標準を推進するための合意を作り出す能力を持っています。これにより、認証、セキュリティ、ネットワーキング、ログ記録と監視を容易にするためのベストプラクティスの青写真とガードレールを定義します。

設計と実装の役割分担


1. ドメインエキスパート

ドメインエキスパートは、特定の業界やビジネス領域に深い知識を持つ専門家です。彼らは、アプリケーションが解決すべきビジネス上の問題や要件を理解し、それを技術チームに伝える役割を果たします。また、彼らはビジネスのニーズと技術的な制約をバランスさせるための重要な役割を果たします。

2. アプリケーションアーキテクト

アプリケーションアーキテクトは、アプリケーションの全体的な設計と構造を決定します。彼らは、システムの各部分がどのように連携するか、どのようにスケールするか、どのようにデータが流れるかなど、アプリケーションの「ビッグピクチャ」を理解しています。また、アーキテクトは、パフォーマンス、セキュリティ、拡張性などの非機能要件を考慮に入れる役割も果たします。

3. デベロッパ

デベロッパーは、アプリケーションの具体的なコードを書く役割を果たします。彼らは、ドメインエキスパートからの要件とアーキテクトからの設計ガイダンスを元に、機能を実装します。デベロッパーは、コードの品質、テスト、デバッグドキュメンテーションなど、アプリケーションのライフサイクルの多くの側面を管理します。

セキュリティ制御


1. 認証

認証は、ユーザーがシステムにアクセスする際に、そのユーザーが主張する通りの人物であることを確認するプロセスです。一般的な認証の方法には、パスワード、生体認証(指紋や顔認証など)、ワンタイムパスワード(OTP)、デジタル証明書などがあります。

2. 許可制御

許可制御(またはアクセス制御)は、認証されたユーザーがシステム内の特定のリソースにアクセスできるように制御するプロセスです。許可制御は、ユーザーの役割や権限に基づいてリソースへのアクセスを許可または拒否します。一般的な許可制御の方法には、役割ベースのアクセス制御(RBAC)、属性ベースのアクセス制御(ABAC)、マンダトリー・アクセス制御(MAC)、ディスクレショナリー・アクセス制御(DAC)などがあります。

ロールバックセキュリティ

ロールバックセキュリティは、システムが攻撃やエラーから回復するための重要な概念です。具体的には、システムが不正な状態やエラー状態になった場合、ロールバックセキュリティを利用してシステムを以前の正常な状態に戻すことができます。

例えば、ランサムウェアによる攻撃を受けた後、ロールバック機能を使用すると、デバイス上のファイルや設定を攻撃前の状態に復元することができます。攻撃者がユーザーのPCに侵入し悪意のある行動を実行した場合、時間を巻き戻してファイルシステムレジストリをリセットすることができます。また、バージョンロールバック攻撃というセキュリティ攻撃も存在します。これは、攻撃者が通信経路上にある通信内容を改ざんし、過去のバージョンに戻すことで、通信の秘密性を侵害する攻撃手法です。この攻撃に対しては、TLSの最新バージョンを使用する、攻撃に対するアラートを設定する、定期的なセキュリティアップデートを実施するなどの対策が必要です。

リソースアクセスストラテジ


1. サーバ信頼セキュリティモデル

サーバ信頼セキュリティモデルは、WebサーバとDBサーバを図太いパイプでつなぐようなモデルです。このモデルをそのままの形で実際のシステムに適用すると、「Webアプリからは何でもできてしまう」状態になり、非常に危険です。しかし、適切なセキュリティ対策を施すことで、このモデルは非常に強力なツールとなります。

2. ベースクライアントセキュリティモデル

ベースクライアントセキュリティモデルは、「偽装/委任モデル(Impersonation/Delegation Model)」とも呼ばれ、ベースクライアントを認証するセキュリティモデルです。このモデルでは、サーバはベースクライアントを「偽装」する必要があります。具体的には、Windows FormsやASP.NETからSSRSのレポートを利用する際に、ベースクライアントを偽装します。

これらのセキュリティモデルは、システムの安全性と信頼性を確保するための重要な概念であり、適切な対策とともに理解しておくことが重要です。それぞれの役割が重要であり、一緒に働くことで、より良いアプリケーションを作り出すことができます。

RBSのセキュリティデザイン4要素


1. クライアント認証方法

クライアント認証は、ユーザーがシステムにアクセスする際に、そのユーザーが主張する通りの人物であることを確認するプロセスです。一般的な認証の方法には、パスワード、生体認証(指紋や顔認証など)、ワンタイムパスワード(OTP)、デジタル証明書などがあります。

2. 内部における許可制御方式

許可制御(またはアクセス制御)は、認証されたユーザーがシステム内の特定のリソースにアクセスできるように制御するプロセスです。許可制御は、ユーザーの役割や権限に基づいてリソースへのアクセスを許可または拒否します。一般的な許可制御の方法には、役割ベースのアクセス制御(RBAC)、属性ベースのアクセス制御(ABAC)、マンダトリー・アクセス制御(MAC)、ディスクレショナリー・アクセス制御(DAC)などがあります。

3. クライアントからの通信のセキュア化

通信のセキュア化は、データがクライアントとサーバ間で安全に転送されることを保証します。通信のセキュア化には、SSL/TLSなどの暗号化プロトコルを使用します。これにより、通信内容が第三者によって傍受されても、内容を読み取ることはできません

4. 他リソースのアクセス方法

他のリソースへのアクセス方法は、システムが他のシステムやサービスと連携するための方法を定義します。これには、APIキー、OAuthトークン、サービスアカウントなどの認証情報を使用することが含まれます。これらの認証情報は、システムが他のリソースに安全にアクセスするための「鍵」の役割を果たします。

以上の4つの要素は、RBSを適用する際のセキュリティデザインの基本的な要素です。それぞれの要素が適切に設計と実装されることで、システムのセキュリティを確保することができます。