ネットワークとセキュリティの機能を構成する

完了

Azure Database for MySQL - フレキシブル サーバー の主要なネットワークとセキュリティ機能には、アクセス制御、接続性、Microsoft Entra ID のサポート、ID、ロール、アクセス許可の集中管理プラットフォームなどがあります。 MySQL フレキシブル サーバーでは、転送中のすべてのデータも既定で暗号化され、Azure またはカスタマー マネージド キーを使用して保存データを暗号化できます。

ネットワーク

ネットワーク アクセスを構成する

MySQL フレキシブル サーバーを作成する場合は、Azure Virtual Network 経由のプライベート アクセス、または必要に応じてプライベート エンドポイントを使用した許可リスト付き IP アドレスのパブリック アクセスのいずれかを選択できます。 [基本] セクションを完了したら、[次へ] を選択します。[ネットワーク] を選択し、[パブリック アクセスとプライベート エンドポイント] または [プライベート アクセス] のいずれかを選択します。

パブリック アクセスとプライベート アクセス間のネットワーク接続の選択のスクリーンショット。

[パブリック アクセスとプライベート エンドポイント] を選択した場合は、データベースをインターネットに公開するかどうかを選択できます。 [パブリック アクセスを許可する] が選択されていない場合、データベースにはプライベート エンドポイントでのみアクセスでき、パブリック IP アドレスを使用してアクセスすることはできません。 パブリック インターネット アクセスを維持するには、[パブリック アクセスを許可する] を選択し、[ファイアウォール規則] セクションで IP アドレスまたは範囲を許可リストに追加します。 Azure ネットワーク上のすべての Azure サービスを許可リストに追加するには、[Azure 内の Azure サービスからこのサーバーへのパブリック アクセスを許可する] を選択します。

パブリック アクセスのネットワーク接続の選択とファイアウォール規則の一覧のスクリーンショット。

パブリック アクセスに加えて、またはパブリック アクセスの代わりに、プライベート エンドポイントを構成できます。 Wingtip Toys はオンプレミス ネットワークと Azure の間で VPN を運用することを計画しているため、プライベート エンドポイントはスキップします。 プライベート リンクの設定の詳細については、リファレンス ドキュメントを参照してください。

仮想ネットワークからの接続のみを許可するには、[プライべート アクセス] を選択し、適切な [サブスクリプション][仮想ネットワーク][サブネット] を選択します。 仮想ネットワークとサブネットを選択しない場合は、新しいネットワークとサブネットが作成されます。

サブスクリプション、仮想ネットワーク、サブネットを含む仮想ネットワークの設定のスクリーンショット。

最後に、IP アドレスではなく変更の可能性がある完全修飾ドメイン名で接続するように [プライベート DNS 統合] を設定する必要があります。 既存の DNS ゾーンを選択するか、Azure で新しい DNS ゾーンを作成します。

プライベート DNS 統合構成のスクリーンショット。

転送中の暗号化を構成する

既定では、MySQL フレキシブル サーバーは TLS (トランスポート層セキュリティ) バージョン 1.2 を使用して暗号化接続のみを受け入れます。 TLS 1.3 をサポートする新しいアプリケーションを開発する場合は、新しいバージョンをサポートまたは適用することをお勧めします。 これを行うには、次の手順を実行します:

  1. Azure portal で、TLS 1.3 で接続する MySQL フレキシブル サーバーを選択します。
  2. [サーバー パラメーター] セクションで、[トップ] または [全て] フィルターの検索バーに「tls_version」と入力します。
  3. [VALUE] ドロップダウン リストで、[TLSv1.2] または [TLSv1.3] を選択し、[保存] を選択します。 server-parameters-tls-version のスクリーンショット。

また、require_secure_transport パラメーターの値をオフに設定することで、暗号化されていない接続を許可することもできますが、これは厳密に必要でない限り推奨されません。

Microsoft Defender for Cloud

Microsoft Defender for Cloud は、データベースの異常または疑わしいアクティビティを検出してアラートを生成するためのコスト効率の高い方法です。 有効にするには、次の手順を実行します。

  1. Azure portal で、Defender で保護する MySQL フレキシブル サーバーを選択します。

  2. [Microsoft Defender for Cloud] セクションで、[有効] を選択します。

Microsoft Defender for Cloud を有効にする選択のスクリーンショット。

アラートの構成方法など、Defender の詳細については、リファレンス ドキュメントを参照してください。

Microsoft Entra ID 認証を使用して有効にし、接続する

開始する前に、適切に構成されたユーザーマネージド ID (UMI) が必要です。 ID には、ディレクトリ閲覧者ロール、または次の個々のアクセス許可が必要です。User.Read.AllGroupMember.Read.All、および Application.Read.ALL。 これらのアクセス許可を追加する方法の詳細については、このチュートリアルを参照してください。

Azure Database for MySQL フレキシブル サーバーに対して Microsoft Entra ID 認証を有効にするには、次の手順に従います。

  1. Azure portal で、Microsoft Entra ID を使用して接続する MySQL フレキシブル サーバーを選択します。

  2. [セキュリティ] セクションで、[認証] を選択します。

    Microsoft Entra ID 構成のスクリーンショット。

  3. [アクセスの割り当て先] という見出しで、次のいずれかを選択します。[Microsoft Entra 認証のみ] (ネイティブ MySQL ユーザー/パスワード ログインを無効にする)、または [MySQL 認証と Microsoft Entra 認証] (ネイティブ MySQL および Microsoft Entra ログインを許可する)。

  4. [ID の選択] という見出しで、このユニットで前述した UMI を選択します。

  5. Microsoft Entra 管理者 にする Microsoft Entra ユーザーまたはグループを選択します。グループを選択すると、グループのすべてのメンバーが管理者になります。 管理者ユーザーまたはグループは 1 つしか指定できないため、別の管理者を選択すると前の管理者が置き換わります。

    Microsoft Entra ID を有効にすると、次の手順で、Microsoft Entra ID 認証を使用して MySQL フレキシブル サーバーに接続できます。

  6. Azure でシェルを認証します。 Azure Cloud Shell を使用する場合、ID はセッションで既に構成されているため、サインインする必要はありません。 認証されていないターミナルを使用している場合は、次のコマンドを実行します。

    az login
    az account set --subscription <subscription_id>
    
  7. 認証されたシェルで、次のコマンドを実行してアクセス トークンを取得します。

    az account get-access-token --resource-type oss-rdbms

  8. サインインするには、提示されたアクセス トークンをコピーし、パスワードとして使用します。 アクセス トークンを mysql クライアントに直接渡すには、Linux で次のコマンドを実行します。

    mysql -h mydb.mysql.database.azure.com \
     --user user@tenant.onmicrosoft.com \
     --enable-cleartext-plugin \
     --password=`az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken`
    

    PowerShell を使用している場合は、次のコマンドを実行します。

    mysql -h mydb.mysql.database.azure.com \
     --user user@tenant.onmicrosoft.com \
     --enable-cleartext-plugin \
     --password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken)
    

    MySQL Workbench などの他のクライアントを使用する場合は、アクセス トークンをパスワード フィールドに貼り付けるだけです。

カスタマー マネージド キーを使用して保存データを暗号化する

保存データの暗号化は、Azure portal または Azure CLI を使用して構成できます。 ただし、カスタマー マネージド キーを使用した暗号化を有効にするには、次の前提条件が満たされていることを確認する必要があります。

  • ユーザー マネージド ID (UMI)。 キー コンテナーにアクセスするには、データベースの UMI が必要です。

  • 権限: ロールベースのアクセス (IAM) またはコンテナー アクセス ポリシーを設定し、次のアクセス許可を UMI に付与します。取得、一覧表示、キーを折り返す、およびキーの折り返しの解除。

  • [論理的な削除] (/azure/key-vault/general/soft-delete-overview" /l "soft-delete-behavior) を有効にします。 誤って暗号化キーへのアクセスを失うと、データが完全に失われる可能性があります。 保護レイヤーとして論理的な削除を有効にします。 Azure portal を使用して新しいキー コンテナーを作成すると、既定で論理的な削除が有効になります。

    コンテナーの名前はわかっていても ID が不明な場合は、次を実行して検索できます。

    az keyvault show --name $KEY_VAULT_NAME
    

    既存のコンテナーで論理的な削除を有効にするには、次を実行します。

    az resource update --id $KEY_VAULT_ID --set properties.enableSoftDelete=true
    
  • 消去保護を有効にします。 論理的に削除されたキーでも、ユーザーまたはコード エラーにより、保持期間の終了前に誤って消去される可能性があります。 消去保護を使用すると、削除されたオブジェクトが完全に削除されるまでの保持期間が設定されます。

これで、Azure portal または Azure CLI を使用してカスタマー マネージド キーを構成し、保存データを暗号化することができるようになりました。

Azure portal を使用している場合、次の手順を実行します:

  1. フレキシブル サーバー インスタンスに移動し、[セキュリティ][データ暗号化] を選択します。

    カスタマー マネージド キーを選択する設定ページのスクリーンショット。

  2. [データ暗号化][+ 選択] を選択します。 [ユーザー割り当てマネージド ID の選択] ダイアログ ボックスで、前提条件で識別されたユーザー割り当てマネージド ID を選択し、[ID]、[追加]の順に選択します。

    ユーザー割り当てマネージド ID を選択するダイアログ ボックスのスクリーンショット。

  3. 次に、[キー識別子の入力] を選択して ID を入力するか、[キー選択] ダイアログ ボックスで、識別子を指定してキーを選択するか、またはキー コンテナーとキーを選択してキーを選択します。

  4. [保存] を選択します。

Azure CLI を使用している場合は、次のコマンドを実行します:

az mysql flexible-server update --resource-group $RESOURCE_GROUP --name $TEST_SERVER --key $KEY_IDENTIFIER --identity $IDENTITY