メインコンテンツにスキップ

PowerShell SharePoint 移行用の Azure アプリ登録を設定する

サインインしたユーザーアカウントなしで ShareGate Migrate の PowerShell SharePoint および Teams 移行を実行するために、Azure アプリ登録を設定する方法について説明します。

注: PowerShell 統合には、ShareGate Migrate の Pro または Enterprise サブスクリプションが必要です。Essentials プランでは利用できません。

この記事は、ShareGate Migrate の PowerShell 統合にのみ適用されます。

アプリケーションのみの認証を使用すると、サインインしたユーザーアカウントなしで、PowerShell から SharePoint および Teams の移行を実行できます。ユーザーの資格情報の代わりに、ShareGate Migrate は Azure アプリ登録を使用して認証を行います。

設定の過程で、アプリ登録を作成し、証明書の資格情報をアップロードして、必要な API のアクセス許可を付与します。

その後、Application (client) ID と証明書を使用して、PowerShell から認証を行います。

始める前に

  • ShareGate Migrate Pro または Enterprise サブスクリプション

  • アプリ登録の作成と管理者の同意の付与には、Microsoft 365 テナントでの Global Administrator アクセス権が必要です

アプリ登録を設定する

移行元および移行先の各テナントでこの作業を行います。

単一のテナント内でのみ使用するシングルテナントアプリの場合は、各テナントで設定全体を繰り返します。

1つの登録を複数のテナントで再利用するマルチテナントアプリの場合は、ホームテナントで手順を完了させた後、その他の各テナントで管理者の同意を付与します。

手順1: 証明書を生成する

ShareGate は、アプリとして認証するために証明書を使用します。次の PowerShell スクリプトを実行して、ローカルユーザーストアに自己署名証明書を生成し、デスクトップにエクスポートします。

# Generate a self-signed certificate in your local user store
$certName = "AzureAppAuthCert"
$cert = New-SelfSignedCertificate -Subject "CN=$certName" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256

# Export the public key (.cer) - upload this to Azure in Step 3
Export-Certificate -Cert $cert -FilePath "$home\Desktop\$certName.cer"

# Export the private key as a .pfx - required if connecting via Option B
$pfxPassword = ConvertTo-SecureString -String "choose-a-strong-password" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath "$home\Desktop\$certName.pfx" -Password $pfxPassword

# Copy this value for use with New-AzureApplication
Write-Host "Thumbprint: $($cert.Thumbprint)"

両方のファイルがデスクトップに保存されます。.cer ファイルは、手順3で Azure にアップロードします。オプション B で接続する予定がある場合は、.pfx ファイルも必要になります。

コンソールに出力されたサムプリントを控えておいてください。「接続」の手順で New-AzureApplication と一緒に使用します。

手順2: Microsoft Entra ID にアプリを登録する

  1. Global Administrator としてMicrosoft Entra 管理センターにサインインします。

  2. Entra ID > App registrations > New registration に移動します。

  3. アプリに名前を付けます(例: ShareGate Migration)。

  4. Supported account types で、シングルテナントアプリの場合は My organization only を、複数のテナントで使用するマルチテナントアプリの場合は Multiple Entra ID tenants を選択します。

  5. Redirect URI は空のままにします。

  6. Register をクリックします。

  7. Overview ページで Application (client) ID をコピーします。これは New-AzureApplication で使用します。

手順3: 証明書をアップロードする

  1. アプリ登録内で、Certificates & secrets > Certificates に移動し、Upload certificate を選択します。

  2. デスクトップから .cer ファイルをアップロードします。

  3. Add をクリックします。

手順4: API のアクセス許可を追加する

  1. アプリ登録内で、API permissions > Add a permission に移動します。

  2. 以下に記載された各 Application permission を追加します。Microsoft Graph のアクセス許可と SharePoint のアクセス許可は、それぞれ別のエントリとして追加してください。Delegated permissions は選択しないでください。

  3. Grant admin consent for [your tenant] をクリックして確定します。

Microsoft Graph permissions:

ChannelMember.ReadWrite.All

Teams チャンネルのメンバーシップ

ChannelSettings.ReadWrite.All

Teams チャンネルの設定

Directory.ReadWrite.All

ディレクトリオブジェクト

Files.ReadWrite.All

すべてのサイトコレクション内のファイル

Group.ReadWrite.All

Microsoft 365 グループ

InformationProtectionPolicy.Read.All

情報保護ポリシー

SensitivityLabels.Read.All

Sensitivity Labels

Notes.ReadWrite.All

OneNote ノートブック

Sites.FullControl.All

すべてのサイトコレクションの完全な制御

Sites.Manage.All

すべてのサイトコレクション内の項目の作成、編集、削除

Sites.ReadWrite.All

すべてのサイトコレクション内の項目の読み取りと書き込み

Tasks.ReadWrite.All

Planner のタスク

Team.Create

チームの作成

TeamMember.ReadWrite.All

チームのメンバーシップ

TeamsAppInstallation.ReadWriteForUser.All

Teams アプリのインストール

TeamSettings.ReadWrite.All

チームの設定

TeamsTab.ReadWrite.All

Teams チャンネル内のタブ

TermStore.ReadWrite.All

用語ストア

User.Read.All

ユーザープロファイル

SharePoint permissions:

注: SharePoint のアクセス許可は、API の一覧の Microsoft Graph ではなく SharePoint の下にあります。

Sites.FullControl.All

すべてのサイトコレクションの完全な制御

Sites.Manage.All

すべてのサイトコレクション内の項目の作成、編集、削除

Sites.Read.All

すべてのサイトコレクション内の項目の読み取り

Sites.ReadWrite.All

すべてのサイトコレクション内の項目の読み取りと書き込み

TermStore.Read.All

用語ストア(読み取り)

TermStore.ReadWrite.All

用語ストア(読み取り/書き込み)

User.Read.All

ユーザープロファイル(読み取り)

User.ReadWrite.All

ユーザープロファイル(読み取り/書き込み)

ShareGate から接続する

New-AzureApplication で資格情報オブジェクトを作成し、それを Connect-Site または Connect-Tenant に渡します。

オプション A: 証明書のサムプリント(生成スクリプトから取得)

手順1のスクリプトを使用した場合、証明書は Cert:\CurrentUser\My にあります。サムプリントを直接渡します。

# Build a credential object from the certificate thumbprint
$app = New-AzureApplication -ClientId "<application-client-id>" -Thumbprint "<certificate-thumbprint>"

# Connect to a specific site
Connect-Site -Url "https://contoso.sharepoint.com/sites/Marketing" -AzureApplication $app

# Or connect at the tenant level
Connect-Tenant -Domain "contoso" -AzureApplication $app

オプション B: .pfx ファイルからの証明書

証明書が .pfx ファイルとして存在する場合は、それを直接読み込みます。

# Load the certificate from a .pfx file
$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new(
"C:\certs\sharegate-app.pfx",
"your-pfx-password")

# Build a credential object
$app = New-AzureApplication -ClientId "<application-client-id>" -Certificate $certificate

# Connect to a site
Connect-Site -Url "https://contoso.sharepoint.com/sites/Marketing" -AzureApplication $app

1つのアプリオブジェクトで、同じセッション内の複数の接続を認証できます。複数の Connect-Site または Connect-Tenant の呼び出しで、同じ $app 変数を再利用してください。

注: セキュリティポリシーにより必要なアクセス許可の1つを付与できない場合は、Connect-Site または Connect-Tenant-AllowMissingPermissions を追加すると、そのまま接続できます。

不足しているアクセス許可に依存する操作は、Forbidden エラーで失敗します。

このスイッチは、認証が成功した後のアクセス許可チェックを緩和するだけです。サインインの失敗を解決するものではありません。

アプリを保存して再利用する

アプリ登録オブジェクトを保存しておくと、後のセッションで取得できるため、毎回作り直す必要がなくなります。保存するには Save-AzureApplication、読み込むには Get-AzureApplication を使用します。

既知の制限事項

  • Modified ByCreated By は移行時に引き継がれません。項目には、元の作成者ではなく、アプリのサービス ID が表示されます。

  • ユーザーアラートはスキップされます。アプリのみの認証にはアラートを送信するためのユーザーコンテキストがありません。

  • クラシック Web パーツは移行されません。

  • クラシック SharePoint ワークフローは移行されません。

  • InfoPath フォームは部分的にのみ移行されます。警告が表示されることが予想されます。

  • 発行の承認ワークフローにはユーザーコンテキストが必要です。エラーまたは警告が表示されることが予想されます。

  • Sensitivity Label は、移行時にはまだ適用されません。今後のアップデートでの対応が予定されています。

この記事はAIによって翻訳されています。ご不明な点がある場合は、英語の原文をご確認ください。

こちらの回答で解決しましたか?