events
3月31日 23時 - 4月2日 23時
最大の SQL、Fabric、Power BI 学習イベント。 3 月 31 日から 4 月 2 日。 コード FABINSIDER を使用して $400 を保存します。
今すぐ登録このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
この記事では、SQL Server のセキュリティの実現に役立つベスト プラクティスとガイドラインについて説明します。 SQL Server のセキュリティ機能の包括的な説明については、「SQL Server の保護」をご覧ください。
特定の製品のセキュリティのベスト プラクティスについては、Azure SQL Database と SQL Managed Instance および Azure VM 上の SQL Server に関する記事をご覧ください。
多層セキュリティ手法は、異なるセキュリティ スコープを対象とする複数のセキュリティ機能を使用することにより、多層防御ソリューションを提供します。 SQL Server 2016 で利用できるようになり、後続のリリースで強化されたセキュリティ機能は、セキュリティの脅威に対処し、適切にセキュリティ保護されたデータベース アプリケーションを提供するのに役立ちます。
Azure はいくつかの業界規制および標準に準拠しているため、ユーザーは仮想マシンで実行されている SQL Server を使用して、標準に準拠しているソリューションを構築できます。 Azure での法規制遵守に関する情報については、 Azure トラスト センターを参照してください。
多くの場合、SQL Server データベースには顧客、従業員、企業秘密、製品データ、医療、財務、その他の機密データに関するデータが格納されるので、組織は列レベルでデータを保護する必要があります。 通常、機密性の高い列には、ID/社会保障番号、携帯電話番号、名、姓、財務口座の ID、個人情報だとみなされるその他のデータが含まれます。
このセクションで説明する方法と機能により、最小限のオーバーヘッドで列レベルの保護レベルが上がり、アプリケーションのコードを大きく変更する必要はありませn。
Always Encrypted を使用して、保存データと転送中のデータを暗号化します。 暗号化されたデータは、アプリケーション クライアント レベルでクライアント ライブラリによってのみ暗号化解除されます。 可能な場合は、明確な暗号化よりランダム化された暗号化を使います。 保護されたエンクレーブが設定された Always Encrypted は、ランダム化された暗号化のシナリオで BETWEEN、IN、LIKE、DISTINCT、結合、その他などの比較操作のパフォーマンスを向上させることができます。
Always Encrypted を使用できない場合、動的データ マスク(DDM)を使用して列レベルでデータを難読化します。 動的データ マスク(DDM)は Always Encrypted と互換性がありません。 可能な限り、動的データ マスクよりも Always Encrypted を使用することをお勧めします。
テーブル、ビュー、またはテーブル値関数に対して、列レベルで GRANT アクセス許可を使うこともできます。 列に付与できるのは“SELECT
“、“REFERENCES
“、“UPDATE
“のアクセス許可のみであることに注意してください。
- テーブル レベルの“DENY
“は、列レベルの“GRANT
“よりも優先されません。
行レベル セキュリティ(RLS)は、データベース テーブルの行へのアクセスを管理するため、ユーザー実行コンテキストを使用する機能を有効にします。 RLS を使うと、ユーザーは自分に関係のあるレコードのみを表示できます。 これにより、アプリケーションを大幅に変更する必要なしに、アプリケーションに "レコード レベル" のセキュリティが提供されます。
ビジネス ロジックは、RLS 機能のオンとオフを切り替えるセキュリティ ポリシーによって制御されるテーブル値関数内にカプセル化されます。 セキュリティ ポリシーは、RLS が操作対象とするテーブルにバインドされた“FILTER
“と“BLOCK
“述語も管理します。 呼び出しを行ったユーザーに返されるレコードを制限するには、行レベル セキュリティ (RLS) を使います。 アプリケーションのユーザーが同じ SQL Server ユーザー アカウントを共有する中間層アプリケーションを通してデータベースに接続するユーザーに対しては、SESSION_CONTEXT (T-SQL) を使用します。 パフォーマンスと管理性を最適にするには、行レベル セキュリティのベスト プラクティスに従ってください。
ヒント
組織のセキュリティ態勢を最大限に高めるには、行レベル セキュリティ (RLS) を Always Encrypted または動的データ マスク (DDM) と組み合わせて使います。
Transparent Data Encryption (TDE) は、データベース ファイルに保存時の暗号化を提供することにより、ファイル レベルでデータを保護します。 Transparent Data Encryption(TDE)は、データベース ファイルを暗号化解除する適切な証明書がなければ、データベース ファイル、バックアップ ファイル、tempdb
ファイルをアタッチしたり、読み取ったりできないようにします。 Transparent Data Encryption(TDE)を使用しないと、攻撃者が物理メディア(ドライブまたはバックアップ テープ)を入手し、データベースを復元またはアタッチして内容を読み取る可能性があります。 Transparent Data Encryption (TDE) は、SQL Server の他のすべてのセキュリティ機能と併用できます。 Transparent Data Encryption (TDE) では、データ ファイルとログ ファイルの I/O の暗号化と暗号化解除がリアルタイムで実行されます。 TDE の暗号化は、ユーザー データベースに格納されたデータベース暗号化キー(DEK)を使用します。 データベース暗号化キーは、master
データベースのデータベース マスター キーによって保護される証明書を使用して保護することもできます。
TDE を使用して保存データ、バックアップ、tempdb
を保護します。
SQL Server を監査するには、サーバー レベルまたはデータベース レベルで監査ポリシーを作成します。 サーバー ポリシーは、サーバー上の既存と新規作成のすべてのデータベースに適用されます。 簡素化のため、サーバー レベルの監査を有効にし、データベース レベルの監査ですべてのデータベースのサーバー レベルのプロパティを継承できるようにします。
セキュリティ対策が適用されている機密データが含まれるテーブルと列を監査します。 テーブルまたは列がセキュリティ機能による保護を必要とするほど重要な場合は、監査の対象として十分に重要であると見なす必要があります。 機密情報が含まれていても、アプリケーションやアーキテクチャによる何かの制限によって必要なセキュリティ対策を適用できないテーブルに対し、監査を実施して定期的にレビューすることが特に重要です。
SQL Server は、2 つの認証モードをサポートしています。Windows 認証モードと "SQL Server と Windows 認証モード" (混合モード) です。
ログインはデータベース ユーザーとは異なります。 最初に、ログインまたは Windows グループを、別のデータベース ユーザーまたはロールにマップします。 次に、データベース オブジェクトにアクセスするためのアクセス許可を、ユーザー、サーバー ロール、またはデータベース ロールに付与します。
SQL Server では、次の種類のログインがサポートされています。
master
データベースにユーザー名とパスワードのハッシュを格納します。master
データベース)のインスタンスから分離されたデータベースです。 SQL Server では、Windows 認証と SQL Server 認証の両方で包含データベース ユーザーがサポートされます。次の推奨事項とベスト プラクティスは、ID と認証方法をセキュリティで保護するのに役立ちます。
最小特権のロール ベース セキュリティ戦略を使って、セキュリティ管理を強化します。
Azure では、ロールベースのアクセス制御(RBAC)を使用し、最小特権のセキュリティを使用する
可能な限り SQL Server 認証ではなく Active Directory を選び、特に、アプリケーションまたはデータベースのレベルでセキュリティを格納するのではなく Active Directory を選びます。
コンピューター レベルのアクセス権を持つアカウント(RDP を使用してコンピューターにログインするアカウントを含む)に対しては、多要素認証を使用します。 単一要素のパスワードベースの認証は、資格情報が侵害されたり誤って提供されたりする危険がある弱い形式の認証であるので、これは資格情報の盗難や漏洩から保護するのに役立ちます。
推測が容易ではなく、その他のアカウントや用途に使用されていない強力で複雑なパスワードが必要です。 パスワードを定期的に更新し、Active Directory ポリシーを適用します。
グループ管理サービス アカウント (gMSA) は、パスワードの自動管理、簡略化されたサービス プリンシパル名 (SPN) の管理、および他の管理者への管理の委任を提供します。
DBA の AD アカウントに付与する権限を最小限に抑えます。仮想マシンへのアクセスを制限する職務、オペレーティング システムにログインする機能、エラー ログと監査ログを変更する機能、およびアプリケーションや機能をインストールする機能の分離を検討します。
sysadmin ロールから DBA アカウントを削除し、sysadmin ロールのメンバーにするのではなく、DBA アカウントには CONTROL SERVER を付与します。 システム管理者の役割は“DENY
“を適用しませんが、“CONTROL SERVER“は適用します。
経時的なデータ変更の履歴レコードを保持すると、データの偶発的な変更への対処に役立つ場合があります。 アプリケーション変更の監査に役立つ場合もあり、不審者が不正なデータ変更を行ったときにデータ要素を回復できます。
次の構成と評価ツールは、インスタンス レベルで SQL Server 環境のセキュリティにおける攻撃対象領域のセキュリティの対処、データ セキュリティの機会の特定、ベスト プラクティス評価を提供します。
SQL Server を危険にさらすいくつかの一般的な脅威について知っておくと役に立ちます。
--
“のコメントマークで終了させます。SQL インジェクションのリスクを最小限にするには、次の項目を検討してください。
EXECUTE
“、“EXEC
“、“sp_executesql
“を呼び出すすべてのコードを確認する必要があります。;
: クエリの区切り記号'
: 文字データ文字列の区切り記号--
: 単一行コメントの区切り記号/* ... */
: コメントの区切り記号xp_
: xp_cmdshell
など、カタログ拡張ストアド プロシージャ
xp_cmdshell
を使用することはお勧めしません。 “xp_cmdshell
“によってリスクが発生する可能性があるため、代わりに SQLCLR を使用するか、その他の代替手段を探してください。サイドチャネル攻撃のリスクを最小限にするには、次のことを考慮してください。
次の一般的なインフラストラクチャの脅威を考慮してください。
攻撃者に簡単にアカウント名やパスワードを推測されたくないので、パスワードが検出されるリスクを軽減する次の手順が役立ちます。
sysadmin メンバーシップを持つ SQL アカウントを一意の名前で作成します。 プロビジョニング中に SQL 認証を有効にすると、ポータルからこの操作を行うことができます。
ヒント
プロビジョニング中に SQL 認証を有効にしない場合、認証モードを手動で[SQL Server と Windows 認証モード]に変更する必要があります。 詳細については、「サーバー認証モードの変更」を参照してください。
SA ログインを使用する必要がある場合は、プロビジョニング後にログインを有効にし、新しい強力なパスワードを割り当てます。
ランサムウェアのリスクを最小限にするには、次のことを考慮してください。
events
3月31日 23時 - 4月2日 23時
最大の SQL、Fabric、Power BI 学習イベント。 3 月 31 日から 4 月 2 日。 コード FABINSIDER を使用して $400 を保存します。
今すぐ登録トレーニング
モジュール
Microsoft セキュリティ ベスト プラクティスに基づいて、ランサムウェアやその他の攻撃に対する回復性戦略を設計する - Training
ランサムウェアなどの一般的なサイバー脅威と、組織で対策を講じておく必要がある攻撃パターンの種類について学習します。
認定資格
Microsoft Certified: Azure Database Administrator Associate - Certifications
Microsoft PaaS リレーショナル データベース オファリングを使用して、クラウド、オンプレミス、ハイブリッド リレーショナル データベースの SQL Server データベース インフラストラクチャを管理します。