セキュリティ
上級

Permissions Policy(パーミッションズポリシー)

2024年Feature Policy後継新標準。Permissions-Policy header+camera/microphone/geolocation/payment制限+iframe allow attribute+Self/Origin指定搭載。

0 回閲覧
0 いいね
2026/5/5 更新
関連タグ
Permissions Policy
Feature Policy
Web Security
iframe
Browser API

概要

Permissions Policyは2024年に主要ブラウザ全Baseline対応となったWeb Security仕様で、ブラウザ機能(カメラ・マイク・位置情報・支払い・WebGPU・ジャイロセンサー等)へのアクセスを細かく制御するHTTP Header仕様。前身のFeature Policy(2018-2022)からSyntaxを刷新した後継規格で、より宣言的で読みやすいStructured Field Format((self "https://example.com")構文)を採用。Webサイトが利用可能なブラウザ機能をHeader宣言で制限することで、3rd-party iframe(広告・analytics・wid)の不要な機能アクセスを排除し、プライバシー強化と攻撃面減少を実現。Chrome 88+(2021年1月)・Firefox 74+(2020年3月)・Safari 16.4+(2023年3月)で対応し、2024年にBaseline Newly available到達。Google・Cloudflare・Shopify等の主要Webサービスが本格採用。HIPAA・GDPR・PCI DSS等のコンプライアンス対応にも有効で、企業向けWebシステムでは導入必須レベルの重要セキュリティ仕様。

主な特徴・仕組み

  • Permissions-Policy Header: HTTP Response Header経由でPolicy指定
  • Structured Field Format: Permissions-Policy: camera=(self "https://example.com")
  • iframe allow attribute: <iframe allow="camera 'self'"> で iframe 個別Permission付与
  • Default Policy List: 50+のブラウザ機能(camera/microphone/geolocation/payment等)
  • Self / Origin指定: self(同一オリジン)、*(全許可)、()(全拒否)、特定Origin
  • Reporting API統合: 違反検知でPolicy違反通知、report-to+endpoint設定
  • Iframe Inheritance: 親PolicyからiframeへCascade継承、明示的にallow attributeで上書き可能
  • Allow vs Deny: デフォルトは多くの機能でCurrent Originのみ許可、外部はallow必要
  • Web Integration: Service Worker・Web Worker・Shared Worker等もPolicy対象
  • Browser Support: Chrome 88+/Firefox 74+/Safari 16.4+/Edge 88+ Baseline 2024
  • Document Policy併用: より細かいfeature制御の Document Policy仕様併用可能

スペック比較表

項目Permissions PolicyFeature Policy(前身)iframe sandboxCSP frame-src
構文Structured Fieldレガシー構文sandbox attributeCSP directive
対象機能50+ APIs30+ APIs限定(scripts/forms)iframe URL制御
Default Policy厳格(self only)緩和(全origin許可)全制限制限なし
iframe個別制御allow attributeallow attributesandbox attribute×
Origin指定URL listURL list×URL list
ReportingReporting APIReporting API×report-uri
Browser SupportBaseline 2024レガシー(廃止)全ブラウザ全ブラウザ
採用WebGoogle/Cloudflare/Shopifyレガシーiframe多数多数

具体例・対応製品

Permissions-Policy:
  camera=(self),
  microphone=(self "https://meet.example.com"),
  geolocation=(),
  payment=(self),
  fullscreen=(self),
  display-capture=(self),
  publickey-credentials-get=(self),
  publickey-credentials-create=(self)
<!-- iframe個別Permission -->
&lt;iframe
  src="https://video-conf.example.com"
  allow="camera 'self'; microphone 'self'; display-capture 'self'">
&lt;/iframe>

<!-- 全機能拒否(高セキュリティ) -->
&lt;iframe
  src="https://untrusted-widget.example.com"
  allow="">
&lt;/iframe>
  • Chrome 88+ stable: 2021年1月リリース、フル機能対応
  • Firefox 74+/Safari 16.4+: Baseline 2024、cross-browser対応
  • Google Workspace: Gmail/Docs/Sheets全面採用、Permission厳格化
  • Cloudflare Pages: CDN Headerで自動Permission policy追加
  • Shopify Storefront: 数百万のEC StoreでPermissions Policy適用
  • 競合機種: Feature Policy(レガシー・廃止)、iframe sandbox、CSP frame-src、Document Policy

自作PCでの選び方・注意点

Permissions PolicyはWeb開発者向けのセキュリティ仕様で、jisaku.comのWeb Frontend(Next.js 16+TypeScript)では運用必須レベルの重要技術。Next.js 16ではnext.config.js の headers() で簡単にPermissions Policy Header設定可能。jisaku.comでは現在Feature Policy(レガシー)構文で部分対応中だが、Permissions Policy本格移行で構文の一貫性向上+Cross-browser対応の堅牢性確保が見込める。実装のポイントは、1) 必要機能を明示的に有効化(camera/microphone等の通常不要なものは()で全拒否)、2) iframe widget(YouTube/Twitter/Disqus等)に対しallow attributeで個別Permission付与、3) Reporting API+endpointでPolicy違反監視。Webサイトが扱わないブラウザ機能(WebUSB/Bluetooth/MIDI等)は早めに () で全拒否し、3rd-party widget が悪用するリスクを排除すべき。Server-side Rendering(SSR)+CDN(Vercel/Cloudflare)構成でも、Edge Function側でPermissions Policy Header注入が容易。GDPR・CCPA等のプライバシー規制強化に対応する文脈で、Permissions Policy明示+Privacy Policy文書化はコンプライアンス上の必須要件。jisaku.comの個人情報扱う領域(ログイン・プロフィール編集・購買履歴等)では特に厳格な設定推奨。

関連用語との違い

Feature Policy(前身)との違い: Feature Policyは2018-2022の前身仕様、Permissions PolicyはStructured Field Format構文に刷新した後継。機能セット拡張+Default Policy厳格化、Feature Policy値はレガシー扱いだが互換動作あり。 iframe sandboxとの違い: sandboxは古いHTML5仕様で「全制限・例外を許可」、Permissions Policyは「全許可・例外を制限」のApproachが逆。両者組合せ可能で、sandboxで強制制限+Permissions Policyで詳細制御の階層的セキュリティが実現する。

よくある質問(FAQ)

Q1: 既存サイトに導入する手順は? A: 1) 必要機能を洗い出し(camera/microphone/geolocation等のUse Caseリスト化)、2) Permissions-Policy header初期設定でReporting Modeで2週間違反監視、3) iframe widgetにallow attribute個別追加、4) 本適用。Next.js/Astro/Remixは設定ファイル1箇所で全パス対応。

Q2: Permission拒否でiframe widgetが動かない場合は? A: iframeのallow属性で個別Permission付与。例: YouTube embed → allow="autoplay; encrypted-media"、Stripe Checkout → allow="payment"。Documentに公式記載のないPermissionsはWidget提供元に確認、最低限のPermission付与でセキュリティ確保。

Q3: Reporting APIで違反監視するメリットは? A: Policy違反パターンから攻撃検知や設定漏れ発見可能。report-to: csp-endpoint でEndpoint指定+Sentry/Datadog/独自Endpointで集計。違反多数の機能はPolicy見直し、攻撃想定の違反はWAF・Web App Firewallで自動blacklist化等の対応可能。

まとめ

  • Permissions Policy = 2024年Baseline Newly available
  • Permissions-Policy Header+iframe allow attributeで機能制御
  • Feature Policy(前身)からStructured Field Format構文へ刷新
  • Chrome 88+/Firefox 74+/Safari 16.4+/Edge 88+ 全Baseline
  • Google/Cloudflare/Shopify業界標準採用、GDPR/CCPA対応に有効
この記事について
カテゴリーセキュリティ
難易度上級
作成日2026/5/5