Microsoft LoopがGAされたので管理面を整理してみる

2023/12/08に公開

はじめに

企業利用のMicrosoft Loop(以下、Loop)が2023年11月にGAされました。
https://techcommunity.microsoft.com/t5/microsoft-365-blog/microsoft-loop-built-for-the-new-way-of-work-generally-available/ba-p/3982247

パブリックプレビュー時点より動作が安定してもっさり感もなくなったなぁという印象です。
個人的にOneNoteよりいいのでは?と感じています。

しかし、他のM365サービスよりは管理面でできることが少ないので、2023年12月時点で管理者ができることや把握しておいた方がよいことをまとめてみました。

ライセンス

Office 365 E3やE5は利用ができないのでご注意ください。

  • Microsoft 365 Business Standard
  • Microsoft 365 Business Premium
  • Microsoft 365 E3
  • Microsoft 365 E5

https://support.microsoft.com/en-us/office/loop-access-via-microsoft-365-subscriptions-92915461-4b14-49a4-9cd4-d1c259292afa

また、LoopのGAとともにSharePoint Embeddedがパブリックプレビューされました。
Loopの一部の機能はSharePoint Embeddedを利用していますが追加の課金はいりません。
あくまでPaaSのSharePoint Embeddedでアプリ開発をするときに従量課金されます。
https://techcommunity.microsoft.com/t5/sharepoint-premium-blog/announcing-sharepoint-embedded-public-preview-at-espc23/ba-p/3993428

事前設定

Microsoft 365管理センター > 設定 > サービス > Microsoft Loop でチェックボックスにチェックをいれる


既定でチェックが入っている

これで全ユーザーが利用可能になりましたが、Teamsなどでループコンポーネントを作成することは許可するけどループアプリでループワークスペースは作成しちゃダメ、といった細かい制限も行うことができます。
※ループワークスペースは組織のSPOストレージクォーターを消費するので、OneDriveに保存されるループコンポーネントだけ使わせたいといったケースに有効かなと思いました

https://config.office.com/ で設定できます。
ざっと見た限りパブリックプレビュー時と似たような感じだったので、本記事では割愛させていただきます。
コルネさんのブログMSの公開情報をご覧ください。

loopというキーワードでフィルターしてみたら5件ヒット

TeamsクライアントでのLoopの制限はSharePoint 管理シェルを利用するらしいです。

Set-SPOTenant -IsLoopEnabled $false

https://learn.microsoft.com/ja-jp/microsoft-365/loop/loop-components-configuration?view=o365-worldwide#settings-management-for-loop-functionality-in-teams

クライアント

デスクトップアプリは提供されていないのでWebブラウザで https://loop.microsoft.com から利用します。
ブラウザのPWAとしてLoopをインストールすることでデスクトップアプリ風に使えます。(裏ではWebブラウザを仲介しているのでネットワーク接続は必要です)


・・・ > アプリ > Microsoft Loopのインストール

要素

1つのループワークスペースの中に複数のループページがあり、ループページの中に複数のループコンポーネントがあるイメージです。

名称 機能 作成場所
ループワークスペース 1つのコンテナのようなもので目的別に作成 ループアプリ
ループページ ループワークスペースをさらに細かく分け、テキスト・表・画像・ループコンポーネントなどを配置できる ループアプリ
ループコンポーネント 共有するとどこで編集しても編集が同期され最新のものになる ループページ・Teams・Word・Outlookなど

https://support.microsoft.com/en-us/office/get-started-with-microsoft-loop-9f4d8d4f-dfc6-4518-9ef6-069408c21f0c

ループコンポーネントの各アプリでの作成方法などは平野愛さんがまとめてくださっているのでご覧ください。

ループコンポーネント保存先

.loopの拡張子として作成された場所に応じて保存されます。
※パブリックプレビュー時と拡張子が変更されています

Head Head
ループアプリで作成 SharePoint Embeddedのループワークスペース(=コンテナ)内
独自のSharePointが存在する場所で作成(Teamsのチャネルなど) SharePoint
上記以外の場所(OutlookやTeams個人チャットなど) OneDrive for Business

注意点としてLoopアプリ内で作成するとSharePoint Embeddedに保存されますが、保存先のSharePoint Embeddedに直接アクセスできないようです。


アクセスしようとするとアクセスが拒否される

管理画面からSharePoint Embeddedに現状アクセスできないので組織にどのくらいのループワークスペースがあるか管理画面から把握はできません。

ただしPowerShellからある程度情報を収集できるので次節に記載します。

ストレージ容量

1個のループワークスペース(ループワークスペース内のループページやループコンポーネント含む)の最大サイズは1TBとなり、組織のSharePoint Onlineのストレージクォーターにカウントされるようです。
この辺りが気になる方はサポートへの確認も推奨します。

ループと Microsoft ストレージ
Loop アプリのパブリック プレビュー中、Loop アプリで作成された Loop ワークスペースとページは、個人または組織のストレージ クォータにはカウントされませんでした。これは変更されます。職場および学校のアカウント (Microsoft Entra アカウント) の場合、ループのワークスペースとページが組織の SharePoint ストレージ クォータにカウントされます。この変更が発生すると、新しいループ ワークスペースの最大サイズは 5 GB ではなく 1 TB になります。

https://support.microsoft.com/en-us/office/loop-access-via-microsoft-365-subscriptions-92915461-4b14-49a4-9cd4-d1c259292afa

一方、TeamsやOutlookで作成したループコンポーネントは、ループワークスペース内に保存されず作成者のOneDriveに保存されるのでOneDriveの容量に準じます。



空のWordファイルよりはサイズは大きいけどそこまでではない

https://office365itpros.com/2023/11/08/loop-workspace-storage/

管理画面から現状利用中のループワークスペースのストレージ容量を確認できないのでPowerShellから確認します。

MSの公開情報に従いSharePoint管理シェルをインストールします。
Get-SPOContainerコマンドを利用するため16.0.24211.12000 以降が必要です。

以下のコードは組織の全てのループワークスペースのストレージ容量をGB単位で計算しています。(Chat GPTに作成してもらいました)

function Get-AllSPOContainers {
    param (
        [string]$OwningApplicationId
    )

    $allContainers = @()
    $pagingToken = $null

    do {
        $containers = Get-SPOContainer -OwningApplicationId $OwningApplicationId -Paged -PagingToken $pagingToken
        $allContainers += $containers

        # 次のページがあるか確認
        if ($containers.Count -eq 5000) {
            $pagingToken = $containers[-1].PagingToken
        } else {
            $pagingToken = $null
        }

    } while ($pagingToken -ne $null)

    return $allContainers
}

function Get-TotalStorageUsedInGB {
    param (
        [string]$OwningApplicationId
    )

    $allContainers = Get-AllSPOContainers -OwningApplicationId $OwningApplicationId

    $totalStorageUsedInBytes = 0

    foreach ($Container in $allContainers) {
        $ContainerDetails = Get-SPOContainer -OwningApplicationID $OwningApplicationId -Identity $Container.ContainerId
        $totalStorageUsedInBytes += $ContainerDetails.StorageUsedInBytes
    }

    $totalStorageUsedInGB = $totalStorageUsedInBytes / 1GB
    return $totalStorageUsedInGB
}

# 使用例
$OwningApplicationId = "a187e399-0c36-4b98-8f04-1edc167a0996"
$totalStorageUsedInGB = Get-TotalStorageUsedInGB -OwningApplicationId $OwningApplicationId
Write-Host "Total Storage Used: $totalStorageUsedInGB GB"

削除したワークスペースの復元

ユーザーが間違えて削除してしまったワークスペースは現時点ではユーザー自身で復元できません。

MSの公開情報にもゴミ箱から復元できないと記載がありますが、93日以内であれば管理権限を持つアカウントがコンテナ(ループワークスペース)を復元できそうなコマンドを見つけました。

Get-SPOContainerコマンドはユーザーが削除したゴミ箱に存在するコンテナは取得されません。
Get-SPODeletedContainerコマンドでゴミ箱に存在するコンテナのコンテナIDで取得し、Restore-SPODeletedContainerコマンドで復元できるかもと思いコマンドを実行すると、コマンドは成功しますが1日経ってもワークスペース一覧に表示されません。

MSの公開情報に以下の記載があるので、現時点ではコンテナを復元してもそれに紐づくループワークスペースは復元されないようです。

まだ利用できない機能
PowerShell の機能
すべてのループ ワークスペースを一覧表示する
ループ ワークスペースの列挙リストにストレージを追加する
ループ ワークスペースの外部共有を制御する
ループ ワークスペースの削除と復元

残念ですが、ユーザーには一度削除したループワークスペースは復元できないと伝えるしかないようです。

ループワークスペース作成者が退職

MSの公開情報より、退職者のアカウントを削除する前に任意のユーザーにループワークスペースを共有しておくことで手出しできない状況を防げそうです。ループワークスペースの共有は所有者でなくでも可能です。

共有ワークスペースは名簿によってサポートされ、退職した場合でも存在し続けます。 ただし、ワークスペースの作成者が会社を辞めたユーザーである場合、他のユーザーはワークスペースを削除できません。

Get-SPOContainerコマンドで取得できるOwnwerプロパティを変えればループワークスペースの所有者を変更できそうですが、現時点では変更できそうなコマンドは見つかりませんでした。

DLPやAIPのラベリングなどのコンプライアンス

一部の機能は実装されていません。
ロードマップによると2024年には残りの機能も実装されそうなので、DLPやAIPをガチガチに使っている組織は条件付きアクセスでLoopをブロックしておいた方が良いケースもあるかもしれません。

条件付きアクセスでブロックすることで、既に作成されたループコンポーネントに対してもアクセスをブロックできます。

Azure AD PowerShellでLoopのサービスプリンシパルを作成することで条件付きアクセスに利用できます。

New-AzureADServicePrincipal -AccountEnabled $true -AppId a187e399-0c36-4b98-8f04-1edc167a0996 -AppRoleAssignmentRequired $false -DisplayName "Microsoft Loop app" -Tags {WindowsAzureActiveDirectoryIntegratedApp}

https://learn.microsoft.com/ja-jp/microsoft-365/loop/loop-compliance-summary?view=o365-worldwide#manually-initializing-microsoft-loop-app-for-conditional-access-management-in-microsoft-entra

細かいコンプライアンスの部分ですが気になるところはメモで整理しておきます。
詳細はMSの公開情報を適宜ご確認ください。

  • OneDriveに保存されているループコンポーネントには大体のコンプライアンス機能が実装済み(秘密度ラベルやDLPポリシーヒントは未実装)
  • ループワークスペースのアイテム保持ポリシーはすべてのSPOサイトに適用されている場合のみ有効で個々のループワークスペースがオーバーライドできない
  • ループワークスペースは保持ラベルを利用できない
  • ループワークスペースはDLPポリシーを利用できるがDLPポリシーヒントは未実装

試しにクレジットカード番号を含む場合アクセスを制限するDLPをSPOサイト全体に適用してみました。
ループコンポーネントであってもただの表内のテキストであってもDLPポリシーが適用されましたが動きが少し異なります。

  • ループページ内のループコンポーネントにクレジットカード番号を書いた場合

    クレジットカード番号を書いた人の画面。引き続き編集できる。

    ループワークスペースの所有者の画面。内容は閲覧できるが編集できない。

    クレジットカード番号を書いていない人の画面。他の要素は閲覧できる。

  • ループページ内の表などにクレジットカード番号を書いた場合
    ループワークスペースの所有者以外ループページにアクセスできなくなる

    ループワークスペースの所有者の画面。所有者はクレジットカード番号を書いていないが編集できる。

    クレジットカード番号を書いた人と書いていない人の画面。閉じるを押してもループページは真っ白。

いずれのパターンでもループワークスペースの所有者であれば機密情報を閲覧できることを抑えておいた方が良いです。 ※今後変更されるかも

またDLPが適用される時間はTeamsよりタイムラグがかなりあります。
今後のアップデートに期待です。

おわりに

2024年に色々アップデートされそうなので楽しみです!

Discussion