SQL ログインとグループを移行する

完了

SQL Server データベースを Azure SQL にシームレスかつ安全に移行するには、セキュリティ情報の移行を理解し、効果的に管理することが不可欠です。

SQL ログインとグループを移行するタイミングを決定する

さまざまな部署にサービスを提供する大きなオンプレミスの SQL Server インフラストラクチャを持つ大規模組織があるとします。 各部署には、特定のニーズに合わせてカスタマイズされた独自の SQL ログイン、ユーザー ロール、およびアクセス許可のセットがあります。 組織は、クラウドのスケーラビリティの利点を活用するために、これらのデータベースを Azure SQL Database に移行することにしました。

このシナリオでは、データベースの移行前にログインを事前に移行すると、テスト フェーズに不要な複雑さが生じる可能性があります。

データベース移行プロジェクトの最後にログインを移行すると、特に複雑なシナリオでのテストが簡単になります。 ログインが事前に移行されると、データベース スキーマの進展によりテストの遅延をもたらす可能性があります。 ログインの移行を待機すると、セキュリティ構成を最終的な構造に合わせて調整できるため、特にテーブルに依存するセキュリティがデータ保護に不可欠なときに、移行プロセスが簡略化されます。

課題 説明
複雑なアクセス許可の構造 ログインを後で移行すると、移行中にデータベース構造が進展するのに合わせてアクセス許可を調整できます。
テストの遅延 ログインを早期に移行すると、テストが遅くなり、スキーマの変更とともにセキュリティ検証が複雑になる可能性があります。
テーブル依存のセキュリティ ログイン移行を遅延すると、移行中に最終的なデータベース構造が変更された場合、それと一致するようにセキュリティ構成を調整できます。

このシナリオでは、このアプローチを使用すると、セキュリティ対策を最終的なデータベース構造に完全に適合させ、潜在的な複雑さを軽減し、移行プロジェクトをより管理しやすくすることに集中できます。

PowerShell または Azure CLI を使用してログインを移行する

PowerShell (Az.DataMigration モジュール) または Azure CLI を使用して、ログインとサーバー ロールをオンプレミスの SQL Server から Azure SQL ターゲットに移行できます。 このログイン移行プロセスでは、対応するユーザー マッピングを使用したログインの同期や、サーバーのアクセス許可とサーバー ロールのレプリケートなどの手動タスクが自動化されます。

現在、ログイン移行では、Azure VM ターゲット上の Azure SQL Managed Instance または SQL Server がサポートされています。

  • Azure SQL Managed Instance - Windows アカウントと SQL ログインの両方。
  • Azure VM 上の SQL Server - SQL ログインのみ。

データベースの移行を完了しない状態でログイン移行プロセスが開始された場合でも、ログインとサーバー ロールの移行は行われますが、ログイン/ロール マッピングは正しく実行されません。

次の例は、PowerShell を使用してログインを移行する方法を示しています。

New-AzDataMigrationLoginsMigration `
    -SourceSqlConnectionString "<YourSourceConnectionString>" `
    -TargetSqlConnectionString "<YourTargetConnectionString>" `
    -ListOfLogin "login1" "login2" `
    -AADDomainName "<YourAADDomainName>"    # Required for Windows logins

Azure CLI の場合は、 az datamigration login-migration コマンドを使用します。

az datamigration login-migration \
    --src-sql-connection-str "<YourSourceConnectionString>" \
    --tgt-sql-connection-str "<YourTargetConnectionString>" \
    --list-of-login "login1" "login2" \
    --aad-domain-name "<YourAADDomainName>"

多数のログインの場合は、 --csv-file-path パラメーターを使用して、移行するログインの一覧を含む CSV ファイルを渡すことができます。

MoveLogins スクリプト

MoveLogins スクリプトは、オンプレミスの SQL Server から Azure SQL Database またはその他の PaaS オファリングにログイン情報を転送するのに役立ちます。

MoveLogins スクリプトを使用すると、ユーザーの Active Directory 検索を有効にして、ユーザー プリンシパル名 (UPN) を取得できます。

PowerShell で記述されたこのスクリプトは、ログイン、データベース ユーザー、ロール、およびアクセス許可を転送する T-SQL スクリプトを生成します。これをターゲット SQL 環境に適用できます。 これは、ターゲット環境でコマンドを実行しません。 生成されたスクリプト出力をターゲット環境に適用する前に、慎重に確認する必要があります。

このスクリプトは、Azure SQL Database を使用しているか、Azure SQL Managed Instance を使用しているかによって異なる結果を生成します。 Azure SQL Database では、Microsoft Entra ログインと、関連するデータベース ユーザーを作成できません。代わりに、Microsoft Entra ユーザーがデータベース レベルで作成されます。 Azure SQL Managed Instance の場合、サーバー レベルのログインとデータベース ユーザーを持つオンプレミスの SQL Server に似ています。

ログインを転送するには、PowerShell または Azure CLI から開始することをお勧めします。 これらの推奨ツールで問題が発生した場合は、MoveLogins スクリプトの使用などの代替の方法を検討できます。