Elido
1分で読了機能

パスワード保護付き短縮リンク:ゲートの設定タイミングと方法

パスワード保護付き短縮リンクとは何か、どのユースケースに適しているか、リダイレクト時のパスワードゲートの仕組み、そして考慮すべきセキュリティ上の制限について解説します

Marius Voß
DevRel · edge infra
短いリンクがパスワードゲートを通過して転送先に到達する図。誤ったパスワードはブロックされる

パスワード保護付き短縮リンクとは、誰かを先へ進める前にパスワードを要求する短縮URLです。リンクを開くと、転送先の代わりに小さな中間ページが表示され、パスワードを入力してはじめてリダイレクトが実行されます。パスワードが間違っていればプロンプトのままとどまり、転送先URLがブラウザに送られることはありません。

それがすべてのアイデアですが、名前が誇大に聞こえるため正確に説明する価値があります。パスワードゲートはリンクの前にあるアクセスの障壁です。リンクの背後にあるページの暗号化ではありません。これらは異なる保証であり、混同すると後で驚くことになります。この記事では、ゲートが何に役立つか、実際に適合するユースケース、リダイレクト時のチェックの仕組み、セキュリティが終わる場所、そして全体が機能するために組み合わせるべきものを説明します。

パスワード保護付き短縮リンクの用途#

有用なケースはある形を共有しています:完全にコントロールできないチャネルでリンクを共有するとき、URLに加えてアクセスに必要な2番目のものが欲しい場合です。

機密文書が最も明わかりやすいケースです。社外の人に契約草案、財務モデル、社内資料を送るとき。メールは転送されます。PDFは再送されます。URLを持つ人なら誰でも開ける短縮リンクは、それを持つ最も不注意な人と同程度にしかプライベートではありません。パスワードを設定すれば、誤った転送でも自動的なアクセス許可にはなりません。

クライアントの成果物も同じパターンに締め切りが付いたものです。エージェンシーが一括の素材、動画編集、キャンペーンレポートを引き渡す場合。クライアントがアクセスできるべきですが、クライアントのアドレス帳全体がそうであるべきではありません。ゲート付きURLはリンクを作成する際に設定する共有シークレットの後ろに成果物を置きます。

プライベートキャンペーンとゲートコンテンツもリストに含まれます。小さなグループにプレビューしてもらいたいプレローンチのランディングページ。ウェイトリスト向けのアーリーアクセスオファー。オーディエンスがすでに別の場所からパスワードを持っているメンバー限定リソース。いずれもリンクはメールやチャットで移動し、「これを渡された人」と「偶然見つけた人」を分けるのがパスワードです。

適さないもの:本当に秘密にすべきもの、規制対象のもの、漏洩が報告事案になるもの。それらには共有リンクパスワードは粗すぎます。転送先自体に個人ごとの認証が必要であり、これは別のコントロールです(後で戻ります)。

リダイレクト時のパスワードゲートの仕組み#

操作の順序がゲートを意味あるものにするため、ここでは機械的な部分を説明します。

通常の短縮リンクはリダイレクトです。エッジがスラッグを検索し、転送先を見つけ、訪問者のブラウザに 302 を書き込みます。高速でステートレス、質問なし。パスワード保護付き短縮リンクはリダイレクトの前に1つのステップを挿入します:エッジはリンクにパスワードが設定されていることを確認し、転送する代わりにチャレンジを返します。訪問者はパスワードを要求する中間ページが表示されます。送信すると、送信された値が保存されたハッシュと照合されます。一致すればリダイレクトが進みます。一致しなければプロンプトのままとどまり、転送先URLが一度もブラウザに送られることはありません。

フロー図:訪問者が短縮リンクをクリックしてパスワードゲートに到達し、正しいパスワードは転送先へ進み、誤ったパスワードはブロックされたまま

これが価値あるものになるかどうかについて、2つの詳細が重要です。

まず、パスワードはハッシュ化されており、平文で保存されることはありません。リンクの保存されたシークレットは一方向ハッシュであるべきです。データベースの読み取りでシステム上のすべてのリンクパスワードが攻撃者に渡らないようにするためです。Argon2idが現在のパスワードハッシュの推奨アルゴリズムであり、Elidoはリンクパスワードにこれを使用し、チェック自体がタイミングによって情報を漏らさないよう定数時間比較でインプロセスに検証を行います。リンクのAPIはハッシュを返しません;パスワードが設定されているかどうかを示すブール値を返します。保護されたリンクにアクセスした受信者は password_required フラグとチャレンジトークンを含む 401 を受け取り、リダイレクトが起きる前に正しいパスワードをフォローアップリクエストで送信する必要があります。その保存の仕組みはURLショートナーのセキュリティチェックリストのリンクごとのパスワード保護セクションに詳しく記載されています。

次に、チェックは転送先が明かされる前に行われます。明らかに聞こえますが、驚くほど多くの「プライベート」なリンクの仕組みが、クライアントサイドのコードやリダイレクトチェーン内で転送先を漏らしており、熱心な訪問者がネットワーク上でそれを読み取ることができます。チェックをリダイレクト時にサーバーサイドで行う要点は、パスワードが正しくなるまで転送先URLがサーバーに留まることです。本当のURLを取得してリダイレクトするJavaScriptとして実装されたゲートを見たことがあれば、ブラウザの開発者ツールを持つ人なら誰でも簡単に通り抜けられるゲートを見たことになります。サーバーサイドの評価が違いであり、スマートリンクがランディングページ上のJSシムではなくエッジでルーティングする理由と同じ考え方です。

セキュリティの制限をはっきり述べる#

このセクションを人々は飛ばして後悔するので、見落としにくい中ほどに置いています。

パスワードゲートは短縮リンクを保護します。転送先は保護しません。転送先が誰でも直接入力してアクセスできる公開URLであれば、パスワードは短縮リンクを持つ人だけを止めており、基になるページを推測や偶然発見できる人は止めていません。ゲートは、短縮URLしか持っていない人(一般的な共有ケース)に対する障壁を高めます。すでに公開されている転送先に対しては何もしません。

したがってルールはシンプルです:転送先にもアクセス制御が必要です。パスワード保護付き短縮リンクの背後にある文書は、単に長くて推測しにくいパスのどこかに存在するのではなく、あなたが誰であるかを確認する場所にも存在すべきです。OWASPの認証チートシートと付随するアクセス制御ガイダンスがここでの参照文書です:認証は誰であるかを証明し、アクセス制御は何にアクセスできるかを決め、共有リンクパスワードは前者の弱い形であり後者については何も言いません。便利な層として使い、攻撃者と重要なデータの間に立つ唯一のものとしては使わないでください。

その他いくつかの正直な制限。

共有パスワードは共有されます。それを持つすべての人はゲートにとって同じアイデンティティです。誰がリンクを開いたかの個人ごとの記録はなく、全員のパスワードをローテーションせずに特定の1人のアクセスを取り消す方法はありません。Danaが具体的に成果物を開いたことを知る必要がある場合、共有リンクパスワードはそれを教えてくれません。

リンクは常にHTTPSで配信されるべきです。平文のHTTP上で送信されたパスワードは、ネットワーク経路上の誰にでも明文で見えます。トランスポート暗号化は床であり機能ではありません。MDNのHTTPSの概要でその理由を説明しています。ElidoはカスタムドメインでもデフォルトでリダイレクトをHTTPSで配信しますが、原則はどこにゲートを置いても同じです。

そしてパスワードは有効期限の代わりにはなりません。パスワードがあってもなくても、永遠に有効なリンクはリスクです。シークレットはより多くの場所に貼り付けられるにつれて徐々に漏れていきます。ゲートと有効期限を組み合わせてください。

組み合わせるべきもの#

パスワードゲートは1つのコントロールです。カバーできないものをカバーする他のものと重ねると最もうまく機能します。

パスワードゲート、リンク有効期限、HTTPSトランスポート、転送先アクセス制御を補完的なコントロールとして積み重ねた図。パスワードだけでは暗号化ではなく障壁に過ぎないという注記付き

有効期限と最大クリック上限はリンクを時間と使用量で制限します。expires_at を設定してクライアントの成果物が契約終了後に無効になるようにし、一度だけダウンロードできるリンクが一度開かれた後に無効になるよう最大クリック上限を設定します。どちらもクリックイベントが記録される前にリダイレクト時に適用されます。つまり、すでに期限切れのリンクへの誤ったパスワード試行はゲートにも到達しません。有効期限に関するトレードオフはリンクの有効期限と自己破壊リンクで詳しく説明しています。

IPや地理的制限はゲートを試みられる人自体を絞り込みます。クライアントの成果物が1つのオフィスからしか開かれない場合、そのIPレンジにリンクを制限することで、漏洩したパスワードと漏洩したリンクがあっても他の場所からは失敗します。リージョンレベルのコントロールは地域ターゲティング短縮リンクで説明しており、パスワードを置き換えるのではなく組み合わせます。

チームの場合、正しい答えは通常、共有パスワードではなくSSOです。リンクにアクセスすべき人が自社のアイデンティティプロバイダーの従業員である場合、転送先をSCIMとSSOでゲートすればアクセスはディレクトリに従います:誰かが会社を離れると、パスワードのローテーションなしにそのアクセスもなくなります。共有リンクパスワードはアドホックな外部共有向けで、ディレクトリ管理のアクセスは個人ごとの取り消しが必要なあらゆるものに向いています。SCIMとSSOのセットアップガイドでその設定を説明しており、エンタープライズソリューションページでどこに適合するかを確認できます。

一般原則は多層防御です。ここでは単一のコントロールだけでは強力ではありません。パスワードはカジュアルなアクセスを止め、有効期限はウィンドウを制限し、HTTPSはネットワークを保護し、転送先アクセス制御はコンテンツを保護し、SSOはチームのケースを処理します。状況に応じて必要なものを重ねてください。

実践的なハウツー#

リンクをゲートしたい場合、ツールに関わらず作業の形は同じです。

リンクを作成または編集するときにパスワードを設定します。リンクの設定でパスワードを付加できるはずです。設定すると、リンクは単純なリダイレクトではなくなりチャレンジを返すようになります。簡単に推測されないパスワード、かつ別の場所で使い回していないパスワードを選んでください。メールも解除できる共有シークレットは悪い共有シークレットです。

リンクとパスワードを別々のチャネルで共有してください。これが最も価値の高い習慣です。短縮リンクをメールや文書に送り、パスワードはチャットメッセージ、別のメール、または電話で送ります。両方が同じメッセージで送られると、1回の傍受ですべてが渡り、ゲートは何の意味もなくなります。別々に送ることで攻撃者は2つのチャネルを必要とし、1つだけでは不十分になります。

同時に有効期限を設定してください。リンクがどのくらい有効であるべきか、また既知の開封回数の上限を超えた後に無効にすべきかどうかを事前に決め、後でクリーンアップすると約束するのではなく作成時に設定してください。実行されないでしょう。

コンテンツが機密性の高いものであれば、転送先に独自のアクセス制御があることを確認してください。ゲートは共有ケースで役割を果たしています。基になる文書がURLを推測した人にも抵抗する必要がある場合、その保護は転送先にあるべきであり短縮リンクではありません。これらの部分が脅威モデルにどう組み込まれるかについてのより完全な説明は、URLショートナーは安全かで広い視点を説明しており、トラストページでElidoの方針を確認できます。

これがパスワード保護付き短縮リンクの正直なバージョンです。受け取った人誰でもアクセスできる共有URLを防ぐ便利で低摩擦な方法です。金庫ではありません。有効期限と適切なアクセス制御の転送先とともに1つの層として使えば、すべき仕事を正確にこなします。攻撃者と重要なものの間にある唯一のものとして使えば期待を裏切ります。ゲートを設定し、チャネルを分け、有効期限を設け、転送先をロックすれば、機能する共有フローができあがります。

どのプランにどのコントロールがあるかを確認したい場合は料金ページに一覧があります。カスタムドメイン機能では自分のブランドドメインでHTTPS経由のゲート付きリンクを配信する方法を説明しており、そのセットアップはブランドショートリンクの設定方法で説明されています。

ブログの関連記事#

Elidoを試す

EUホスティングのURL短縮サービス。カスタムドメイン、詳細な分析、オープンAPI付き。無料プラン - クレジットカード不要。

タグ
password protected short links
private short link
secure link sharing
gated url
password protected url
share a link securely

続きを読む