カスタム スクリプトを許可する場合のセキュリティに関する考慮事項
スクリプトを挿入して SharePoint 内のサイトとページをカスタマイズできるようにすると、組織内のさまざまなニーズに柔軟に対応できます。 ただし、カスタム スクリプトのセキュリティへの影響に注意する必要があります。
ユーザーがカスタム スクリプトを実行できるようにすると、ガバナンスの適用、挿入されたコードの機能のスコープ設定、コードの特定の部分のブロック、デプロイされたすべてのカスタム コードのブロックを行えなくなります。 カスタム スクリプトを許可する代わりに、SharePoint Framework を使用することをお勧めします。 詳細については、「 カスタム スクリプトの代替手段」を参照してください。
カスタム スクリプトで実行できること
SharePoint ページで実行されるすべてのスクリプト (ドキュメント ライブラリの HTML ページでも、スクリプト エディター Web パーツの JavaScript でも) は、ページと SharePoint アプリケーションにアクセスするユーザーのコンテキストで常に実行されます。 これは、次のことを意味します。
スクリプトは、ユーザーがアクセスできるすべてのものにアクセスできます。
スクリプトは、複数の Microsoft 365 サービスのコンテンツにアクセスでき、Microsoft Graph 統合を超えてアクセスすることもできます。
スクリプトの挿入を監査することはできません
SharePoint 管理者以上は、組織全体または特定のサイト コレクションのカスタム スクリプト機能を許可またはブロックできます。 (これを行う方法については、「 カスタム スクリプトを許可または禁止する」を参照してください)。ただし、スクリプト作成を許可すると、次の情報を特定することはできません。
挿入されたコード
コードが挿入されている場所
コードを挿入したユーザー
任意のページまたはドキュメント ライブラリに対する "ページの追加とカスタマイズ" アクセス許可 (デザインおよびフル コントロール権限レベルの一部) を持つユーザーは、組織内のすべてのユーザーとリソースに強力な影響を与える可能性のあるコードを挿入できます。
このスクリプトは、ページやサイトだけでなく、組織内のすべてのサイト コレクションやその他の Microsoft 365 サービスのコンテンツにアクセスできます。 スクリプトを実行するための境界はありません。 監査できるサイト アクティビティの詳細については、「 サイト コレクションの監査設定を構成する」を参照してください。
挿入されたスクリプトをブロックまたは削除することはできません
カスタム スクリプトを許可している場合は、ユーザーがカスタム スクリプトを追加できないように設定を後で変更できますが、既に挿入されているスクリプトの実行をブロックすることはできません。 危険なスクリプトや悪意のあるスクリプトが挿入された場合、それを停止する唯一の方法は、それをホストするページを削除することです。 これにより、データが失われる可能性があります。
カスタム スクリプトの代わりに
SharePoint Framework は、オープンソース ツールをサポートするスクリプト テクノロジを使用してソリューションを構築するための、管理された完全にサポートされる方法を提供するページおよび Web パーツ モデルです。 SharePoint Framework の主な機能:
フレームワークは、ブラウザーの現在のユーザーと接続のコンテキストで実行されます。
コントロールは、通常のページ Document Object Model (DOM) にレンダリングされます。
コントロールは応答性が高く、アクセス可能です。
開発者はライフサイクルにアクセスできます。 また、レンダリングするには、読み込み、シリアル化と逆シリアル化、構成の変更などにもアクセスできます。
React、Handlebars、Knockout、Angular など、任意のブラウザー フレームワークを使用できます。
ツールチェーンは、npm、TypeScript、Yeoman、webpack、gulp などの一般的なオープン ソースのクライアント向け開発ツールに基づいています。
管理者には、使用されているインスタンスの数や、使用されているページまたはサイトの数に関係なく、ソリューションをすぐに無効にするガバナンス ツールがあります。
ソリューションは、クラシック エクスペリエンスまたは新しいエクスペリエンスを使用する Web パーツとページにデプロイできます。
ソリューションを追加できるのは、グローバル管理者、SharePoint 管理者、アプリ サイトを管理するためのアクセス許可が付与されているユーザーのみです。 アプリ サイトを管理するためのアクセス許可をユーザーに付与する方法については、「 アプリのインストールのアクセス許可を要求する」を参照してください。