diff --git a/src/pentesting-cloud/azure-security/az-services/az-sql.md b/src/pentesting-cloud/azure-security/az-services/az-sql.md index 585ed4856..401b6f6c7 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-sql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-sql.md @@ -4,14 +4,14 @@ ## Azure SQL -Azure SQLは、**Azureクラウド内のSQL Serverデータベースエンジン**を使用する管理された、安全で、インテリジェントな製品のファミリーです。これにより、サーバーの物理的な管理を心配する必要がなく、データの管理に集中できます。 +Azure SQLは、**Azureクラウド内のSQL Serverデータベースエンジン**を使用する、管理された、安全で、インテリジェントな製品のファミリーです。これにより、サーバーの物理的な管理を心配する必要がなく、データの管理に集中できます。 Azure SQLは、4つの主要な提供物で構成されています: -1. **Azure SQL Server**: SQL Serverデータベースの**デプロイと管理**に必要なサーバーです。 +1. **Azure SQL Server**: SQL Serverデータベースの**展開と管理**に必要なサーバーです。 2. **Azure SQL Database**: これは**完全管理型データベースサービス**で、Azureクラウド内に個別のデータベースをホストできます。 -3. **Azure SQL Managed Instance**: これは、より大規模な、全体のSQL Serverインスタンススコープのデプロイメント用です。 -4. **Azure SQL Server on Azure VMs**: これは、**オペレーティングシステム**とSQL Serverインスタンスを**制御したい**アーキテクチャに最適です。 +3. **Azure SQL Managed Instance**: これは、より大規模な、全体のSQL Serverインスタンススコープの展開用です。 +4. **Azure SQL Server on Azure VMs**: これは、**オペレーティングシステム**とSQL Serverインスタンスに対する**制御**を望むアーキテクチャに最適です。 ### SQL Server Security Features @@ -24,26 +24,52 @@ Azure SQLは、4つの主要な提供物で構成されています: **認証方法:** -- Microsoft **Entra-only**認証: サービスにアクセスするEntraプリンシパルを指定する必要があります。 -- **SQLとMicrosoft Entra**の両方の認証: ユーザー名とパスワードによる従来のSQL認証とMicrosoft Entraの併用。 -- **SQLのみ**の認証: データベースユーザーを介してのみアクセスを許可します。 +- Microsoft **Entra-only** 認証: サービスにアクセスするEntraプリンシパルを指定する必要があります。 +- **SQLとMicrosoft Entra**の両方の認証: ユーザー名とパスワードを使用した従来のSQL認証とMicrosoft Entraの併用。 +- **Only SQL** 認証: データベースユーザーを介してのみアクセスを許可します。 SQL認証が許可されている場合、管理者ユーザー(ユーザー名 + パスワード)を指定する必要があり、Entra ID認証が選択されている場合は、管理アクセスを持つ少なくとも1つのプリンシパルを指定する必要があります。 **暗号化:** - 「透過的データ暗号化」と呼ばれ、データベース、バックアップ、およびログを静止状態で暗号化します。 -- 常に、Azure管理キーがデフォルトで使用されますが、顧客管理暗号化キー(CMEK)も使用できます。 +- 常に、デフォルトでAzure管理キーが使用されますが、顧客管理暗号化キー(CMEK)も使用できます。 **管理されたアイデンティティ:** - システムおよびユーザー管理のMIを割り当てることが可能です。 - 暗号化キー(CMEKが使用されている場合)やデータベースからの他のサービスにアクセスするために使用されます。 +- データベースからアクセスできるAzureサービスのいくつかの例については、[このドキュメントのページ](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql)を確認してください。 - 1つ以上のUMIが割り当てられている場合、使用するデフォルトのUMIを指定することが可能です。 - クロステナントアクセスのために、フェデレーテッドクライアントアイデンティティを構成することが可能です。 +SQLデータベースからBlobストレージ内の情報にアクセスするためのいくつかのコマンド: +```sql +-- Create a credential for the managed identity +CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential] +WITH IDENTITY = 'Managed Identity'; +GO + +-- Create an external data source pointing to the blob storage to access +CREATE EXTERNAL DATA SOURCE ManagedIdentity +WITH ( +TYPE = BLOB_STORAGE, +LOCATION = 'https://testsqlidentity.blob.core.windows.net/sqlcontainer', +CREDENTIAL = ManagedIdentityCredential +); +GO + +-- Read a file from ths storage and return it +SELECT * +FROM OPENROWSET( +BULK 'message.txt', +DATA_SOURCE = 'ManagedIdentity', +SINGLE_CLOB +) AS DataFile; +GO +``` **Microsoft Defender:** -- 「潜在的なデータベースの脆弱性を軽減し、異常な活動を検出する」ために役立ちます。 +- データベースの潜在的な脆弱性を軽減し、異常な活動を検出するのに役立ちます。 - Defenderについては独自のレッスンで説明します(他のいくつかのAzureサービスで有効にできます)。 **バックアップ:** @@ -54,46 +80,46 @@ SQL認証が許可されている場合、管理者ユーザー(ユーザー ## Azure SQL Database -**Azure SQL Database**は、スケーラブルで安全なリレーショナルデータベースソリューションを提供する**完全管理型データベースプラットフォーム(PaaS)**です。最新のSQL Server技術に基づいており、インフラ管理の必要がなく、クラウドベースのアプリケーションに人気の選択肢となっています。 +**Azure SQL Database**は、**完全に管理されたデータベースプラットフォームとしてのサービス (PaaS)** であり、スケーラブルで安全なリレーショナルデータベースソリューションを提供します。最新のSQL Server技術に基づいて構築されており、インフラ管理の必要がなく、クラウドベースのアプリケーションに人気の選択肢となっています。 SQLデータベースを作成するには、ホストされるSQLサーバーを指定する必要があります。 ### SQL Database Security Features -- **常に最新**: SQL Serverの最新の安定版で実行され、新機能やパッチを自動的に受け取ります。 +- **常に最新**: 最新の安定版SQL Serverで実行され、新機能やパッチを自動的に受け取ります。 - **継承されたSQL Serverのセキュリティ機能:** -- 認証(SQLおよび/またはEntra ID) -- 割り当てられた管理アイデンティティ +- 認証 (SQLおよび/またはEntra ID) +- 割り当てられたマネージドID - ネットワーク制限 - 暗号化 - バックアップ - … -- **データ冗長性:** オプションはローカル、ゾーン、地理的または地理的ゾーン冗長です。 -- **台帳:** データの整合性を暗号的に検証し、改ざんが検出されることを保証します。金融、医療、機密データを管理する組織に役立ちます。 +- **データ冗長性:** オプションはローカル、ゾーン、GeoまたはGeo-Zone冗長です。 +- **台帳:** データの整合性を暗号的に検証し、改ざんが検出されることを保証します。金融、医療、機密データを管理する組織にとって有用です。 -SQLデータベースは**エラスティックプール**の一部である可能性があります。エラスティックプールは、複数のデータベースを管理するためのコスト効果の高いソリューションで、構成可能なコンピュート(eDTUs)とストレージリソースを共有し、データベースの数ではなく、割り当てられたリソースに基づいて価格が設定されます。 +SQLデータベースは**エラスティックプール**の一部である可能性があります。エラスティックプールは、複数のデータベースを管理するためのコスト効果の高いソリューションで、構成可能なコンピュート (eDTUs) とストレージリソースを共有し、価格はデータベースの数ではなく、割り当てられたリソースに基づいています。 #### Azure SQL Column Level Security (Masking) & Row Level Security -**Azure SQLの動的**データマスキングは、**機密情報を保護するために**未承認のユーザーから隠す機能です。実際のデータを変更するのではなく、表示されるデータを動的にマスクし、クレジットカード番号などの機密情報が隠されることを保証します。 +**Azure SQLの動的**データマスキングは、**機密情報を保護するための機能であり、**不正なユーザーから隠します。実際のデータを変更するのではなく、表示されるデータを動的にマスクし、クレジットカード番号などの機密情報が隠されることを保証します。 **動的データマスキング**は、マスクされていないユーザー(これらのユーザーは指定する必要があります)と管理者を除くすべてのユーザーに影響します。動的データマスキングから免除されるSQLユーザーを指定する構成オプションがあり、**管理者は常に除外されます**。 -**Azure SQL Row Level Security (RLS)**は、**ユーザーが表示または変更できる行を制御する**機能で、各ユーザーが自分に関連するデータのみを表示できるようにします。フィルターまたはブロック述語を使用してセキュリティポリシーを作成することで、組織はデータベースレベルでの細かいアクセス制御を強制できます。 +**Azure SQL Row Level Security (RLS)**は、**ユーザーが表示または変更できる行を制御する機能であり、**各ユーザーが自分に関連するデータのみを表示できるようにします。フィルターまたはブロックの述語を使用してセキュリティポリシーを作成することで、組織はデータベースレベルでの細かいアクセス制御を強制できます。 ### Azure SQL Managed Instance -**Azure SQL Managed Instances**は、より大規模な、全体のSQL Serverインスタンススコープのデプロイメント用です。最新のSQL Serverオンプレミス(エンタープライズエディション)データベースエンジンとのほぼ100%の互換性を提供し、一般的なセキュリティの懸念に対処するネイティブの仮想ネットワーク(VNet)実装を提供し、オンプレミスのSQL Server顧客にとって有利なビジネスモデルを提供します。 +**Azure SQL Managed Instances**は、大規模なSQL Serverインスタンススコープの展開向けです。最新のSQL Serverオンプレミス(Enterprise Edition)データベースエンジンとのほぼ100%の互換性を提供し、一般的なセキュリティの懸念に対処するネイティブの仮想ネットワーク(VNet)実装を提供し、オンプレミスのSQL Server顧客にとって有利なビジネスモデルを提供します。 ### Azure SQL Virtual Machines -**Azure SQL Virtual Machines**は、**オペレーティングシステム**とSQL Serverインスタンスを**制御する**ことを可能にし、SQLサーバーを実行するVMサービス内にVMが生成されます。 +**Azure SQL Virtual Machines**は、**オペレーティングシステム**とSQL Serverインスタンスを制御できるようにします。VMサービスでSQLサーバーを実行するVMが生成されます。 SQL仮想マシンが作成されると、SQLサーバーをホストするVMの**すべての設定を選択することが可能です**(VMレッスンに示されているように)。 -- これは、VMがいくつかのVNetにアクセスし、**管理アイデンティティが添付されている**可能性があり、ファイル共有がマウントされる可能性があることを意味します… SQLからVMへの**ピボッティングが非常に興味深い**です。 -- さらに、特定のキーコンテナにアクセスを許可するために、アプリIDとシークレットを構成することが可能で、そこには機密情報が含まれている可能性があります。 +- これは、VMがいくつかのVNetにアクセスし、**マネージドIDが添付される可能性があり、ファイル共有がマウントされる可能性があることを意味します… SQLからVMへの**ピボットが非常に興味深いものになります。 +- さらに、特定のキーコンテナにアクセスするためにSQLが**アプリIDとシークレットを構成することも可能です**。これには機密情報が含まれている可能性があります。 -自動SQL更新、自動バックアップ、Entra ID認証、他のSQLサービスのほとんどの機能などを構成することも可能です。 +自動SQL更新、自動バックアップ、Entra ID認証、その他のSQLサービスのほとんどの機能などを構成することも可能です。 ## Enumeration @@ -232,7 +258,7 @@ Get-AzSqlVM {{#endtab}} {{#endtabs}} -さらに、データベース内のダイナミックデータマスキングと行レベルポリシーを列挙したい場合は、次のクエリを実行できます: +さらに、データベース内のダイナミックデータマスキングおよび行レベルポリシーを列挙したい場合は、次のクエリを実行できます: ```sql --Enumerates the masked columns SELECT @@ -304,7 +330,7 @@ sqlcmd -S .database.windows.net -U -P