IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ドロップボックス, インコーポレイテッドの特許一覧

特表2024-513300リンクプラットフォーム及びパートナーサービスによるリンクの共同管理
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-25
(54)【発明の名称】リンクプラットフォーム及びパートナーサービスによるリンクの共同管理
(51)【国際特許分類】
   G06F 16/901 20190101AFI20240315BHJP
【FI】
G06F16/901
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023552574
(86)(22)【出願日】2022-02-07
(85)【翻訳文提出日】2023-10-20
(86)【国際出願番号】 US2022015422
(87)【国際公開番号】W WO2023277963
(87)【国際公開日】2023-01-05
(31)【優先権主張番号】17/360,400
(32)【優先日】2021-06-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/360,542
(32)【優先日】2021-06-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/360,549
(32)【優先日】2021-06-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/360,556
(32)【優先日】2021-06-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】509117964
【氏名又は名称】ドロップボックス, インコーポレイテッド
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】パッセー, アーロン
(72)【発明者】
【氏名】ワン, ファンチョウ
(72)【発明者】
【氏名】カニンガム, エリック
(72)【発明者】
【氏名】オズバーン, ロイス
(72)【発明者】
【氏名】ラーソン, ニコラス
(72)【発明者】
【氏名】ヴェッテラウ, デイビット
(72)【発明者】
【氏名】ホー, ウィリアム
(72)【発明者】
【氏名】ホー, ハリソン
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175BA02
(57)【要約】
本技術は、コンテンツ管理システム又は他のサービスに代わってオブジェクトへのリンクを作成、維持、及びサービスできるリンクサービスに関する。リンクサービスは、必要に応じてリンクの管理を他のサービスと共有することができ、また、リンクをサポートする他の機能を提供しながら、他のサービスがリンクを発行し、リンクの対象であるオブジェクトを管理することを可能にすることもできる。さらに、リンクサービスは、ファイルシステム内のアクタとしてリンクをサポートできるファイルシステムとインタフェースすることができ、これにより、リンクのサポートにおけるより大きな制御と柔軟性が提供される。リンクサービスは、レガシーサービスによって発行されたリンクのサービスと管理にも対応することができ、レガシーサービスは、一貫したユーザ体験を維持するために利用されるべき独自のリンクロジックを備えている。
【選択図】図8
【特許請求の範囲】
【請求項1】
リンクサービスによって、パートナーサービスから、共同管理リンクによって参照されるオブジェクトへのアクセスを提供する要求を受信することであって、前記要求は、前記パートナーサービスが前記共同管理リンクにマッピングするパートナーサービスリンクをリンク呼び出し元が呼び出した結果として生じるオブジェクトに関連する要求を、前記パートナーサービスが受信した結果である、ことと、
前記リンクサービスによって、前記共同管理リンクの検証、及びリンクロギングを含むリンクサービス機能を実行することと、
前記リンクサービス機能を実行した後、前記リンクサービスにより前記パートナーサービスに、前記オブジェクトを含むファイルシステムを指すファイルシステムアクセスオブジェクトを送信することであって、前記ファイルシステムアクセスオブジェクトは、認可トークン、認可されたエンティティの識別情報、及びオブジェクトIDを含む、ことと、
を含む、方法。
【請求項2】
前記パートナーサービスからの前記オブジェクトへのアクセスを提供する要求は、前記パートナーサービスが、前記リンク呼び出し元が前記オブジェクトにアクセスすることを許可されていると判定した後に発生し、これにより、前記パートナーサービスと前記リンクサービスの両方が、それら自身のアクセス判定を行う、請求項1に記載の方法。
【請求項3】
前記認可されたエンティティの前記識別情報は、前記リンクに対応するs_IDである、請求項2に記載の方法。
【請求項4】
前記パートナーサービスから前記要求を受信することに応答して、前記ファイルシステムを指す前記ファイルシステムアクセスオブジェクトを作成すること、
を含む請求項1に記載の方法。
【請求項5】
前記ファイルシステムアクセスオブジェクトは、前記ファイルシステムアクセスオブジェクトが有効であり続ける時間を制限するための有効期限を有する認可トークンを含む、請求項1記載の方法。
【請求項6】
前記ファイルシステムが前記オブジェクトを前記パートナーサービスに送信する前に、前記共同管理リンクに関連するアクセスレベル要求を前記リンクサービスに送信することと、
前記リンクサービスによって、前記共同管理リンクに関連付けられた前記アクセスレベルを判定することと、
前記リンクサービスによって、前記ファイルシステムに、前記共同管理リンクに関連付けられたアクセスレベルを送信すること、
をさらに含む、請求項1に記載の方法。
【請求項7】
前記ファイルシステムによって、前記ファイルシステムアクセスオブジェクトが、前記ファイルシステム内の前記オブジェクトに対するアクセスパーミッションにおいてアクセスが許可されているsIDを識別するか否かを判定することと、
前記sIDが前記オブジェクトへのアクセスを許可されている場合、前記オブジェクトに対する前記アクセスパーミッションと一致する前記パートナーサービスに、前記オブジェクトを送信することと、
をさらに含む、請求項1に記載の方法。
【請求項8】
前記リンク呼び出し元が前記ファイルシステムにユーザアカウントを有することを判定することと、
link_sIDに加えて、前記ユーザアカウントのsIDを前記認可トークンに含めること、
をさらに含む、請求項7に記載の方法。
【請求項9】
前記共同管理リンクによって参照される前記オブジェクトへのアクセスを提供する前記要求が、前記パートナーサービスに前記オブジェクトを要求するリンク呼び出し元を識別する、請求項1に記載の方法。
【請求項10】
前記リンクサービスのAPIによって、前記パートナーサービスから、アクセスレベル変更要求を受信することであって、前記アクセスレベル変更要求は、前記オブジェクトに対する少なくとも1つのアクセスパラメータの変更を含み、前記少なくとも1つのアクセスパラメータの前記変更は、前記共同管理リンクに適用される、こと、
を含む、請求項1に記載の方法。
【請求項11】
命令を含む非一時的コンピュータ可読媒体であって、前記命令は、コンピューティングシステムによって実行されると、前記コンピューティングシステムに、
リンクサービスによって、パートナーサービスから、共同管理リンクによって参照されるオブジェクトへのアクセスを提供する要求を受信することと、
前記リンクサービスによって、前記共同管理リンクの検証、及びリンクロギングを含むリンクサービス機能を実行することと、
前記リンクサービス機能を実行した後、前記リンクサービスにより前記パートナーサービスに、前記オブジェクトを含むファイルシステムを指すファイルシステムアクセスオブジェクトを送信することであって、前記ファイルシステムアクセスオブジェクトは、認可トークン、認可されたエンティティの識別情報、及びオブジェクトIDを含む、ことと、
を行わせる、非一時的コンピュータ可読媒体。
【請求項12】
前記パートナーサービスからの前記オブジェクトへのアクセスを提供する要求は、前記パートナーサービスが、前記リンク呼び出し元が前記オブジェクトにアクセスすることを許可されていると判定した後に発生し、これにより、前記パートナーサービスと前記リンクサービスの両方が、それら自身のアクセス判定を行う、請求項11に記載のコンピュータ可読媒体。
【請求項13】
前記コンピュータ可読媒体は、前記コンピューティングシステムによって実行されると、前記コンピューティングシステムに、
前記ファイルシステムによって、前記ファイルシステムアクセスオブジェクトが、前記ファイルシステム内の前記オブジェクトに対するアクセスパーミッションにおいてアクセスが許可されているsIDを識別するか否かを判定することと、
前記sIDが前記オブジェクトへのアクセスを許可されている場合、前記オブジェクトに対する前記アクセスパーミッションと一致する前記パートナーサービスに、前記オブジェクトを送信することと、
を行わせる命令をさらに含む、請求項11に記載のコンピュータ可読媒体。
【請求項14】
前記共同管理リンクによって参照される前記オブジェクトへのアクセスを提供する前記要求が、前記パートナーサービスに前記オブジェクトを要求するリンク呼び出し元を識別する、請求項11に記載のコンピュータ可読媒体。
【請求項15】
前記コンピュータ可読媒体は、前記コンピューティングシステムによって実行されるとき、前記コンピューティングシステムに、
前記リンクサービスのAPIによって、前記パートナーサービスから、アクセスレベル変更要求を受信する命令であって、前記アクセスレベル変更要求は、前記オブジェクトに対する少なくとも1つのアクセスパラメータの変更を含み、前記少なくとも1つのアクセスパラメータの変更は、前記共同管理リンクに適用される、命令を、
さらに含む、請求項11に記載のコンピュータ可読媒体。
【請求項16】
パートナーサービスとのリンクを共同管理するためのリンクサービスであって、
命令を格納するように構成されたストレージと、
前記命令を実行するように構成されたプロセッサと、を備え、
前記プロセッサに、
パートナーサービスから、共同管理リンクによって参照されるオブジェクトへのアクセスを提供する要求を受信することと、
前記リンクサービスによって、前記共同管理リンクの検証、及びリンクロギングを含むリンクサービス機能を実行することと
前記リンクサービス機能を実行した後、前記オブジェクトを含むファイルシステムを指すファイルシステムアクセスオブジェクトを前記パートナーサービスに送信し、前記ファイルシステムアクセスオブジェクトは、認可トークン、認可されたエンティティの識別情報、及びオブジェクトIDを含むこと、
を実行させる、リンクサービス。
【請求項17】
前記パートナーサービスからの前記オブジェクトへのアクセスを提供する要求は、前記パートナーサービスが、前記リンク呼び出し元が前記オブジェクトにアクセスすることを許可されていると判定した後に発生し、これにより、前記パートナーサービスと前記リンクサービスの両方が、それら自身のアクセス判定を行う、請求項16に記載のリンクサービス。
【請求項18】
前記認可されたエンティティの前記識別情報は、前記リンクに対応するs_IDである、請求項17に記載のリンクサービス。
【請求項19】
前記プロセッサは、前記命令を実行し、前記プロセッサに、
前記パートナーサービスから前記要求を受信することに応答して、前記ファイルシステムを指す前記ファイルシステムアクセスオブジェクトを作成すること、
を行わせるように構成される、請求項16に記載のリンクサービス。
【請求項20】
前記ファイルシステムアクセスオブジェクトは、前記ファイルシステムアクセスオブジェクトが有効であり続ける時間を制限するための有効期限を有する認可トークンを含む、請求項16に記載のリンクサービス。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、コンテンツ管理システム内のオブジェクトへのリンクに関し、より詳細には、ファイルシステム内のアクタとしてリンクを識別することに関し、これにより、アクセス制御リストを使用してオブジェクトへのアクセスを規制することができる。
【背景技術】
【0002】
コンテンツ管理システムにおいて、オブジェクトへのアクセスを提供できるリンクを共有することは一般的である。しかしながら、リンクによって提供されるアクセスが、ファイルシステムによって利用されるアクセス制御ロジックと一致しない場合があるように、リンクは、コンテンツ管理システムのファイルシステムと密接に結合されていないことが多い。多くの場合、コンテンツ管理システムは、リンクが有効であるかどうか、リンク呼び出し元が適切なリンクホルダであるかどうかを判定するため、及び、リンク呼び出し元のファイルシステム内のオブジェクトへのアクセスパーミッションをブートストラップするために、追加のロジックを利用する必要がある。ほとんどのファイルシステムは、ファイルシステム内のアクタであるサブジェクトと、権限のステートメントに依存している。例えば、ユーザは読み取り/書き込みアクセス権を持つことができる。しかし、リンクの場合、リンク呼び出し元がファイルシステムに知られていない場合、ファイルシステムは、アクセスを許可するかどうか、又はどのようなタイプのアクセスを許可すべきかを判定するために、誰をアクタとして識別すべきであるか?このような問題は、多くの複雑性を生み出し、コンテンツ管理システムによるリンク共有の柔軟性と機能性を制限する。
【図面の簡単な説明】
【0003】
本技術の上記及びその他の利点及び特徴は、添付の図面に示された具体的な実施態様を参照することによって明らかになるであろう。当業者であれば、これらの図面は本技術のいくつかの実施例を示しているに過ぎず、本技術の範囲をこれらの実施例に限定するものではないことを理解するであろう。さらに、当業者は、以下の添付図面を使用することにより、さらに具体的かつ詳細に記載され、説明された本技術の原理を理解するであろう。
【0004】
図1】本技術のいくつかの態様によるコンテンツ管理システム及びクライアントデバイスの一例を示す。
【0005】
図2】本技術のいくつかの態様による、リンクサービスを含むコンテンツ管理システムの追加的な詳細を示す。
【0006】
図3】本技術のいくつかの態様によるオブジェクトデータベースの例を示す。
【0007】
図4】本技術のいくつかの態様によるサブジェクトデータベースを示す。
【0008】
図5】本技術のいくつかの態様による、リンクサービスによって管理されるリンクによって参照されるオブジェクトにアクセスするための例示的な方法を示す。
【0009】
図6】本技術のいくつかの態様による、リンクサービスによって管理されるリンクによって参照されるオブジェクトにアクセスするための例示的なシーケンス図を示す。
【0010】
図7】本技術のいくつかの態様による、ディレクトリツリー内のオブジェクトに対する個々のパーミッションステートメントから構成されるアクセス制御リストを評価するための例示的な方法を示す。
【0011】
図8】本技術のいくつかの態様による、例示的なリンクサービス、及びリンクサービスによって実行されるいくつかの例示的なサービスを示す。
【0012】
図9】本技術のいくつかの態様による、いくつかの例示的なAPIとそれらの機能を示す。
【0013】
図10】本技術のいくつかの態様による、リンクを作成するための例示的な方法を示す。
【0014】
図11A】本技術のいくつかの態様による、リンクサービスを使用してリンクを作成するための例示的なユーザインタフェースを示す。
【0015】
図11B】サードパーティサービスによって提供されるユーザインタフェースの例を示し、サードパーティサービスは、本技術のいくつかの態様によって、リンクサービスにリダイレクトすることができるリンクを作成することができる。
【0016】
図12A】、
図12B】本技術のいくつかの態様による、リンクプラットフォーム・アズ・ア・サービスとして動作するリンクサービスと、サードパーティサービスとによってリンクを共同管理するための例示的な方法の一部を示す。
【0017】
図13】本技術のいくつかの態様による、リンクサービスによってリンクを共同管理するための例示的なシーケンス図を示す。
【0018】
図14】本技術のいくつかの態様による、レガシーリンクをサポートするための例示的な方法を示す。
【0019】
図15A】、
図15B】本技術のいくつかの態様による、レガシーリンクをサポートするための代替の呼び出しフローを示すシーケンス図を示す。
【0020】
図16】本技術のいくつかの態様を実装するためのシステムの例を示す。
【発明を実施するための形態】
【0021】
以下、本技術の様々な実施例について詳細に説明する。特定の実装形態について説明するが、これは例示のみを目的として行われることを理解されたい。関連技術の当業者であれば、本技術の精神及び範囲から逸脱することなく、他の構成要素及び構成が使用され得ることを認識するであろう。
【0022】
ほとんどのコンテンツ管理システムは、特定の利用モデルに最適化されており、他の利用メカニズムにはあまり適していない。これは、企業レベルで特定のインスタンスに導入されたコンテンツ管理システムには問題なく機能したが、最新のクラウドベースのコンテンツ管理システムには適していない。
【0023】
最新のコンテンツ管理システムがより柔軟性を必要とすることを示す一例が、リンクの共有である。コンテンツ管理システム内のオブジェクトへのアクセスを提供できるリンクを共有するのが一般的である。しかしながら、リンクによって提供されるアクセスが、ファイルシステムによって利用されるアクセス制御ロジックと一致しないことがあるように、リンクはコンテンツ管理システムのファイルシステムと密接に結合されていないことが多い。多くの場合、コンテンツ管理システムは、リンク呼び出し元が適切なリンクホルダである場合にリンクが有効であるかを判定するため、及び、リンク呼び出し元のファイルシステム内のオブジェクトへのアクセス許可をブートストラップするために、追加のロジックを利用する必要がある。ほとんどのファイルシステムは、ファイルシステム内のアクタであるサブジェクトと、アクセス制御リストに記録された権限のステートメントに依存している。例えば、ユーザは読み取り/書き込みアクセス権を持つことができる。しかし、リンクの場合、リンクの呼び出し元がファイルシステムに知られていない場合、ファイルシステムは、アクセスを許可するかどうか、又はどのようなタイプのアクセスを許可すべきかを決定するために、誰をアクタとして識別すべきであるか?このような問題は、多くの複雑性を生み出し、コンテンツ管理システムによるリンク共有の柔軟性と機能性を制限する。例えば、このようなシナリオでは、ファイルシステムのアクセス制御リストでオブジェクトへのアクセスが許可されていないにもかかわらず、ユーザにオブジェクトへのアクセスが許可されてしまう結果になり得る。このような挙動は望ましくないが、リンク共有機能を有効にする必要がある。
【0024】
開示された技術は、リンク呼び出し元によってリンクを介してオブジェクトが要求される場合に、オブジェクトアクセスを改善するという当技術分野における必要性に応える。具体的には、本技術は、ファイルシステム自体の既知のサブジェクトとしてリンクを識別することができる。そのため、リンクは、アクセス制御リストにおいて権限を与えられたアクタであることができる。このことは、多くの利点を提供する。主な利点は、ファイルシステムが、通常のアクセス制御リスト(Access Control List:ACL)評価を利用して、要求されたオブジェクトへのアクセスを直接判定できることである。オブジェクトがリンクを通じて匿名のリンク呼び出し元によって要求されるか、アクセス制御リストにアクセスパーミッションを持つコンテンツ管理システムの登録ユーザアカウントを通じて直接要求されるかにかかわらず、ファイルシステムは同じ方法でオブジェクトへのアクセスを評価することができる。
【0025】
本技術は、読み出し時に効率的にアクセスをチェックすることができる。オブジェクトがコンテンツ管理システムの任意のクライアントによって要求されたとき、コンテンツ管理システムは、アクセスに何らかの変更があったかどうかを効率的に判定することができる。そして、アクセスに変更が生じたと判定された場合、コンテンツ管理システムは、新しいアクセス権限(又はその喪失)を決定することができる。
【0026】
本技術は、また、より柔軟なアクセス許可モデルを提供する。オブジェクトに対するアクセス許可は、ディレクトリ全体に適用することができ、特定のオブジェクトにのみ適用することができ、グローバルポリシーから継承することができ、直接の先祖から継承することができ、継承されるはずの許可を抑制することができ、抑制され得ないポリシーを提供することができる、などである。上記のポリシーの任意の組合せを集約して、所定のディレクトリツリー内の特定のオブジェクトに対するアクセス制御リストを作成することができる。したがって、本技術は、カスタマイズされたあらゆるアクセスポリシーの集合に対応することができる。
【0027】
アクセスは常に読み出し時にチェックされ、アクセスはオブジェクトレベルで評価できるので、リンクに関連するアクセスは、オブジェクト及びリンクに関連するアクセス制御リストを調整することによって、いつでも変更できる。
【0028】
さらに、本技術は、オブジェクトへのリンクを提供するために、コンテンツ管理システムの従来のユーザアカウントの必要性を排除する。他のサービス又はIOTデバイスは、リンクを送信することを望むかもしれない。従って、本技術はリンクサービスを含む。リンクサービスは、ソフトウェア・アズ・ア・サービス(software-as-a-service)モデルで提供することができ、エンティティ(ユーザアカウント、サービス、デバイスなど)は、ファイルシステム内のオブジェクトへのリンクを作成することができる。リンクサービスは、ファイルシステム内のリンクを確立することに加えて、様々な機能を実行することができる。例えば、リンクサービスは、ロギング、不正防止、ブロッキングなども実行できる。リンクサービスはまた、ファイルシステムによって実施されるアクセスポリシーを超える追加のリンクポリシーを実装又は実施することもできる。リンクサービスは、コンテンツ管理システムによって提供されるサービスとして実装されるか、コンテンツ管理システムとインタフェースする別のプラットフォームとして実装され得る。
【0029】
さらに、本技術は、既存のリンクに対応することができる。これらの既存のリンクは、そのようなリンクをサポートするために前述の追加のロジックを利用するかもしれないが、レガシーリンクは有効なリンクのままであることが望まれる。従って、本技術のリンクサービスは、ファイルシステムがファイルシステム内のアクタとしてリンクを介したアクセスを評価することを可能にしたままで、既存のリンクロジックとインタフェースすることもできる。
【0030】
さらに、リンクサービスの利用を望むであろう追加のサービスは、追加のサービスがリンク及びその利用をより制御できるようなユーザ体験を提供することを望むかもしれない。言い換えれば、追加のサービスは、リンクの取り扱いをリンクサービスに完全に引き渡すことを望まないもしれない。本技術は、追加のサービスと本技術のリンクサービスによるリンクの共同管理を提供することによって、このようなユースケースに対処することもできる。このようにして、追加のサービスは、希望する部分の制御を維持し、リンクの取り扱いの残りの部分をリンクサービスに委託することができる。
【0031】
先行技術に対するこれら及び他の利点が、本明細書で説明される。
【0032】
いくつかの実施形態において、開示される技術は、特に、オブジェクト同期機能及びコラボレーション機能を有するコンテンツ管理システムのコンテキストにおいて導入される。例示的なシステム構成100が図1に示され、これは、クライアントデバイス150と対話するコンテンツ管理システム110を示している。
【0033】
アカウント
【0034】
コンテンツ管理システム110は、アカウントに関連付けてオブジェクトを格納し、オブジェクトの検索、変更、閲覧、及び/又は共有などの様々なオブジェクト管理タスクを実行することができる。さらに、コンテンツ管理システム110は、アカウントが複数のクライアントデバイスからオブジェクトにアクセスすることを可能にすることができる。
【0035】
コンテンツ管理システム110は、複数のアカウントをサポートする。サブジェクト(ユーザ、グループ、チーム、企業、サードパーティサービス、リンクサービス、デバイスなど)は、コンテンツ管理システムを用いてアカウントを作成することができ、アカウントの詳細はサブジェクトデータベース140に格納されることができる。サブジェクトデータベース140は、サブジェクトIDによって登録サブジェクトを識別し、サブジェクトIDに関連付けて登録サブジェクトのプロファイル情報を格納することができる。場合によっては、登録サブジェクトのプロファイル情報は、サブジェクト名及び/又は電子メールアドレスを含む。サブジェクトデータベース140は、アカウントタイプ(例えば、無料又は有料アカウントの様々な階層)、割り当てられた記憶空間、使用された記憶空間、登録されたコンテンツ管理クライアントアプリケーション152が常駐するクライアントデバイス150、セキュリティ設定、個人用の構成の設定などのアカウント管理情報を含むことができる。いくつかの実施形態では、アカウントに関連するいくつかの情報は、直接保存されなくてもよく、むしろこの情報は導出されることがある。例えば、使用される記憶空間は、明示的に記憶されてもよいし、必要なときに計算されてもよい。
【0036】
いくつかの実施形態では、サブジェクトデータベース140は、サブジェクトのアカウントに関連する完全な情報を格納する必要はない。サブジェクトのアカウントに関連する情報の一部は、メタデータ・データベース146などのコンテンツ管理システム110の別のデータベース、又はコンテンツ管理システム110の外部のデータベースに格納され得る。
【0037】
サブジェクトデータベース140は、サブジェクトに関連するアカウントのグループを格納することができる。グループは、グループパーミッションステートメント及び/又はアクセス制御リストに基づくパーミッションを持つことができ、グループのメンバはパーミッションを継承することができる。例えば、マーケティンググループはあるオブジェクトセットへアクセスすることができ、エンジニアリンググループは別のオブジェクトセットへのアクセスすることができる。管理者グループは、グループの変更、サブジェクトアカウントの変更などを行うことができる。グループは、サブジェクトIDによって識別されるサブジェクトでもある。
【0038】
いくつかの実施形態では、サブジェクトデータベース140は、複数のテーブル、インデックス、及び他のデータ構造に分割することができる。
【0039】
オブジェクトストレージ
【0040】
コンテンツ管理システム110の特徴は、オブジェクトのストレージであり、オブジェクトは、オブジェクトストレージ142に格納され得る。オブジェクトは、一般に、ファイルシステムに記録され得る任意のエンティティである。オブジェクトは、ドキュメント、コラボレーションオブジェクト、テキストファイル、オーディオファイル、イメージファイル、ビデオファイル、ウェブページ、実行可能ファイル、バイナリファイル、オブジェクトディレクトリ、フォルダ、ZIPファイル、プレイリスト、アルバム、シンボリックリンク、クラウドドキュメント、マウント、コンテンツ管理システム110又は他のコンテンツ管理システム内の他のオブジェクトを参照するプレースホルダオブジェクトなどのデジタルデータを含む任意のオブジェクトであり得る。
【0041】
いくつかの実施形態では、オブジェクトは、複数のオブジェクトを含むフォルダ、又は共通の属性によって関連付け、又はグループ化された複数のオブジェクトを参照することができるコレクションにグループ化され得る。
【0042】
いくつかの実施形態では、オブジェクトストレージ142は、特定の機能を処理するために他のタイプのストレージ又はデータベースと組み合わされる。オブジェクトストレージ142はオブジェクトを格納することができ、オブジェクトに関するメタデータはメタデータ・データベース146に格納され得る。同様に、オブジェクトがオブジェクトストレージ142に格納されている場所に関するデータは、オブジェクトディレクトリ144に格納され得る。さらに、変更、アクセスなどに関するデータが、オブジェクトデータベース148に格納され得る。オブジェクトデータベース148はまた、オブジェクトにアクセスできるサブジェクトIDを識別するサブジェクトアカウント識別子も含み得る。
【0043】
いくつかの実施形態では、オブジェクトデータベース148は、複数のテーブル、インデックス、及び他のデータ構造に分割され得る。
【0044】
オブジェクトストレージ142、オブジェクトディレクトリ144、オブジェクトデータベース148、及びメタデータ・データベース146などの様々なストレージ/データベースの各々は、2つ以上のそのようなストレージ又はデータベースで構成することができ、多くのデバイス及び場所に分散させることができる。他の構成も可能である。例えば、オブジェクトストレージ142、オブジェクトディレクトリ144、オブジェクトデータベース148、及び/又はメタデータ・データベース146からのデータは、1つ以上のオブジェクトストレージ又はデータベースに結合されてもよいし、追加のオブジェクトストレージ又はデータベースにさらに分割されてもよい。したがって、コンテンツ管理システム110は、図1に示されるよりも多くの、又は少ないストレージ及び/又はデータベースを含むことができる。
【0045】
いくつかの実施形態では、オブジェクトストレージ142は、少なくとも1つのファイルシステム116に関連付けられ、このファイルシステム116は、オブジェクトのストレージを管理するためのソフトウェア又は他のプロセッサ実行可能命令を含み、オブジェクトのストレージの管理には、ストレージのためのオブジェクトの受信、ストレージのためのオブジェクトの準備、オブジェクトのためのストレージロケーションの選択、ストレージからのオブジェクトの取得などを含むが、これらに限定されない。いくつかの実施形態では、ファイルシステム116は、オブジェクトを、オブジェクトストレージ142での格納のための、より小さなチャンクに分割することができる。オブジェクトを構成する各チャンクの場所は、オブジェクトディレクトリ144に記録され得る。オブジェクトディレクトリ144は、オブジェクトストレージ142に格納された各オブジェクトのコンテンツエントリを含むことができる。コンテンツエントリは、オブジェクトを一意に識別するオブジェクトIDと関連付けることができる。
【0046】
いくつかの実施形態では、各オブジェクト及びオブジェクトの各チャンクを決定論的ハッシュ関数から識別されてもよい。決定論的ハッシュ関数は、同じオブジェクトのすべてのコピーに対して同じハッシュを出力するが、異なるオブジェクトに対しては異なるハッシュを出力するので、オブジェクト及びオブジェクトのチャンクを識別するこの方法は、オブジェクトの重複がそのように認識されることを保証にする。この方法論を使用すると、ファイルシステム116は、オブジェクトの異なるバージョンごとに一意のハッシュを出力することができる。
【0047】
ファイルシステム116は、また、オブジェクトデータベース148において、オブジェクトの親又はオブジェクトのコンテンツパスを指定又は記録することもできる。コンテンツパスは、オブジェクトの名前及び/又はオブジェクトに関連付けられたフォルダ階層を含むことができる。例えば、コンテンツパスは、オブジェクトがクライアントデバイス上のローカルファイルシステムに格納されているフォルダ又はフォルダのパスを含むことができる。いくつかの実施形態では、オブジェクトデータベースは、任意のオブジェクトの直接の先祖又は直接の子のみを格納することができ、これにより、オブジェクトのフルパスを導出することができ、オブジェクトのパス全体を格納するよりも効率的であり得る。
【0048】
オブジェクトはオブジェクトストレージ142にブロック単位で格納され、ツリーのようなディレクトリ構造の下には格納されないかもしれないが、そのようなディレクトリ構造は、オブジェクトを閲覧するサブジェクトにとって快適なナビゲーション構造である。ファイルシステム116は、オブジェクトのコンテンツパスを定義又は記録することができ、ディレクトリ構造の「ルート」ノードは特定のアクセス権限が割り当てられた任意のディレクトリであり得、他のディレクトリからアクセス権限を継承するディレクトリとは対照的である。
【0049】
いくつかの実施形態では、ルートディレクトリは別のルートディレクトリの下にマウントされ、単一のディレクトリ構造の外観を与えることができる。これは、アカウントが複数のルートディレクトリにアクセスできる場合に起こり得る。上述したように、ディレクトリ構造は、オブジェクトを閲覧するサブジェクトのための快適なナビゲーション構造にすぎないが、オブジェクトストレージ142内のオブジェクトの格納場所には相関しない。
【0050】
アカウントがオブジェクトを閲覧するディレクトリ構造は、コンテンツ管理システム110におけるオブジェクトの格納場所と相関しないが、ディレクトリ構造は、クライアントデバイス150によって使用されるファイルシステムに応じて、クライアントデバイス150におけるオブジェクトの格納場所と相関し得る。
【0051】
上述のように、オブジェクトディレクトリ144のコンテンツエントリは、オブジェクトを構成する各チャンクの場所を含むこともできる。より具体的には、コンテンツエントリは、オブジェクトを構成するチャンクのオブジェクトストレージ142内の場所を識別するコンテンツポインタを含むことができる。
【0052】
ファイルシステム116は、オブジェクト又はオブジェクトのバージョンを構成する重複オブジェクト又は重複ブロックを識別することによって、必要な記憶空間の量を減少させることができる。複数のコピーを格納する代わりに、オブジェクトストレージ142は、オブジェクト又はオブジェクトのブロックの単一のコピーを格納することができ、オブジェクトディレクトリ144は、重複を単一のコピーにリンクするポインタ又は他の機構を含むことができる。
【0053】
ファイルシステム116はまた、オブジェクト、オブジェクトタイプ、フォルダ、ファイルパスを、及び/又は、様々なアカウント、コレクション、又はグループに対するオブジェクトの関係を、記述するメタデータを、オブジェクトのオブジェクトIDに関連付けてメタデータ・データベース146に格納することもできる。
【0054】
ファイルシステム116はまた、オブジェクトデータベース148に変更、アクセスなどに関するデータのログを格納することができる。オブジェクトデータベース148は、オブジェクトのオブジェクトIDを含むことができ、任意選択で、タイムスタンプ又はバージョン番号及びその他の関連データとともに、変更又はアクセス動作の説明を含むことができる。オブジェクトデータベース148は、変更又はオブジェクトアクセスによって影響を受けるブロックへのポインタも含むことができる。ファイルシステム116はまた、オブジェクトへの変更、オブジェクトの異なるバージョン(分岐するバージョンツリーを含む)、及びオブジェクトデータベース148から取得できる変更履歴を追跡するオブジェクトバージョン制御機構を使用することによって、操作を取り消す能力も提供できる。
【0055】
オブジェクトの同期
【0056】
コンテンツ管理システム110の別の特徴は、少なくとも1つのクライアントデバイス150とのオブジェクトの同期である。クライアントデバイス150は、異なる形態をとり、異なる能力を有することができる。例えば、クライアントデバイス150は、そこに常駐する複数のアプリケーションによってアクセス可能なローカルファイルシステムを有するコンピューティングデバイスである。クライアントデバイス150は、オブジェクトが特定のアプリケーションによってのみ、又は特定のアプリケーションによって与えられた許可によってのみアクセス可能なコンピューティングデバイスであり、オブジェクトは通常、アプリケーション固有の空間又はクラウド内のいずれかに格納される。クライアントデバイス150は、ウェブブラウザを介してコンテンツ管理システム110にアクセスし、ウェブインタフェースを介してオブジェクトにアクセスする任意のクライアントデバイスである。例示的なクライアントデバイス150、150、及び150は、ラップトップ、モバイルデバイス、又はウェブブラウザのようなフォームファクタで示されているが、その説明は、これらの例示的なフォームファクタのデバイスに限定されないことを理解されたい。例えば、クライアント150のようなモバイルデバイスは、そこに常駐する複数のアプリケーションによってアクセス可能なローカルファイルシステムを有するかもしれないし、クライアント150は、ウェブブラウザを介してコンテンツ管理システム110にアクセスするかもしれない。このように、クライアント150の機能を考慮する場合、フォームファクタは限定的であると考えられるべきではない。クライアントデバイス150に関して本明細書で説明する1つ以上の機能は、デバイスの特定の能力(ファイルアクセスモデルがそのような能力の1つである)に応じて、すべてのクライアントデバイスで利用可能である場合もあれば、そうでない場合もある。
【0057】
多くの実施形態では、クライアントデバイス150は、コンテンツ管理システム110のアカウントに関連付けられるが、いくつかの実施形態では、クライアントデバイス150は、共有リンクを使用してコンテンツにアクセスすることができ、アカウントを必要としない。
【0058】
上述のように、いくつかのクライアントデバイスは、ウェブブラウザを使用してコンテンツ管理システム110にアクセスすることができる。しかしながら、クライアントデバイスはまた、クライアントデバイス150上に保存され実行されるクライアントアプリケーション152を使用して、コンテンツ管理システム110にアクセスすることもできる。クライアントアプリケーション152は、クライアント同期サービス156を含むことができる。
【0059】
クライアント同期サービス156は、クライアントデバイス150とコンテンツ管理システム110との間でオブジェクトへの変更を同期するために、サーバ同期サービス112と通信することができる。
【0060】
クライアントデバイス150は、クライアント同期サービス156を介してコンテンツ管理システム110とコンテンツを同期することができる。同期は、プラットフォームに依存しないものとすることができる。すなわち、コンテンツは、様々なタイプ、能力、オペレーティングシステムなどの複数のクライアントデバイスにわたって同期させることができる。クライアント同期サービス156は、クライアントデバイス150のファイルシステムの指定された場所にあるオブジェクトに対するあらゆる変更(例えば、新しい、削除された、修正された、コピーされた、又は、移動されたオブジェクト)を同期することができる。
【0061】
オブジェクトは、クライアントデバイス150からコンテンツ管理システム110に同期されることが可能であり、その逆も可能である。同期がクライアントデバイス150からコンテンツ管理システム110へ行われる実施形態では、サブジェクトは、クライアントデバイス150のファイルシステムからオブジェクトを直接操作することができ、一方、クライアント同期サービス156は、監視されたフォルダ内のファイルに対する変更について、クライアントデバイス150上のディレクトリを監視することができる。
【0062】
クライアント同期サービス156は、それが監視するディレクトリ内のコンテンツの書き込み、移動、コピー、又は削除を検出すると、クライアント同期サービス156は、その変更をコンテンツ管理ストレージサービス116に同期させることができる。いくつかの実施形態では、クライアント同期サービス156は、オブジェクトをブロックに分割する、一意の識別子を生成するためにオブジェクトをハッシュ化するなど、上述した機能を含むコンテンツ管理ストレージサービス116のいくつかの機能を実行することができる。クライアント同期サービス156は、クライアントストレージインデックス164内のコンテンツにインデックスを付け、その結果をクライアントストレージインデックス164に保存することができる。インデックス付けは、パスに加え、オブジェクト識別子、及び各オブジェクトについての一意の識別子を保存することを含むことができる。いくつかの実施形態では、クライアント同期サービス156は、サーバ同期サービス112からオブジェクト識別子を学習し、クライアントデバイス150のオペレーティングシステムから一意のクライアント識別子を学習する。
【0063】
クライアント同期サービス156は、ストレージインデックス164を使用して、クライアントストレージ内のオブジェクトの少なくとも一部と、コンテンツ管理システム110上のサブジェクトアカウントに関連付けられたオブジェクトとの同期を容易にすることができる。例えば、クライアント同期サービス156は、ストレージインデックス164をコンテンツ管理システム110と比較し、クライアントストレージ上のコンテンツとコンテンツ管理システム110上のサブジェクトアカウントに関連付けられたコンテンツとの間の差異を検出することができる。その後、クライアント同期サービス156は、クライアントストレージ上のコンテンツを適宜アップロード、ダウンロード、修正、及び削除することによって、差異を一致させることを試みることができる。ファイルシステム116は、必要に応じて、オブジェクトデータベース148、メタデータ・データベース146、オブジェクトディレクトリ144、オブジェクトストレージ142、サブジェクトデータベース140などのために、変更された又は新しいオブジェクトを格納することができる。
【0064】
コンテンツ管理システム110からクライアントデバイス150に同期するとき、オブジェクトデータベース148に記録されたオブジェクトのマウント、変更、追加、削除、移動に関するデータは、クライアントデバイス150に送信される、通知サービス117を使用した通知をトリガすることができる。クライアントデバイス150に変更が通知されると、クライアントデバイス150は、クライアントデバイスに知られている最後の同期ポイント以降にオブジェクトデータベース148にリストされた変更の要求を行うことができる。クライアントデバイス150が、コンテンツ管理システム110との同期が取られていないと判定すると、クライアント同期サービス156は、変更を含むオブジェクトブロックを要求し、変更されたオブジェクトのローカルコピーを更新する。
【0065】
いくつかの実施形態では、ストレージインデックス164はツリーデータ構造を格納し、1つのツリーはサーバ同期サービス112に従ったディレクトリの最新の表現を反映し、別のツリーはクライアント同期サービス156に従ったディレクトリの最新の表現を反映する。クライアント同期サービスは、サーバ同期サービス112にデータを要求するか、クライアントデバイス150上の変更をコンテンツ管理システム110にコミットすることによって、ツリー構造が一致することを保証するように動作することができる。
【0066】
ときには、クライアントデバイス150がネットワーク接続を利用できない場合もある。このような事態では、クライアント同期サービス156は、オブジェクトの変更についてリンクされたコレクションを監視し、ネットワーク接続が利用可能になったときにコンテンツ管理システム110に後で同期するために、それらの変更をキューに入れることができる。同様に、サブジェクトはコンテンツ管理システム110との同期を手動で開始、停止、一時停止、又は再開することができる。
【0067】
クライアント同期サービス156は、コンテンツ管理システム110上の特定のサブジェクトアカウントに関連付けられたすべてのコンテンツを同期することができる。あるいは、クライアント同期化サービス156は、コンテンツ管理システム110上の特定のサブジェクトアカウントに関連付けられたオブジェクトの一部を選択的に同期することができる。オブジェクトの一部のみを選択的に同期させることは、クライアントデバイス150上のスペースを確保することでき、帯域幅を節約することができる。
【0068】
いくつかの実施形態では、クライアント同期サービス156は、特定のサブジェクトアカウントに関連するオブジェクトの一部を選択的に格納し、オブジェクトの残りの部分のためのプレースホルダオブジェクトをクライアントストレージに格納する。例えば、クライアント同期サービス156は、コンテンツ管理システム110上のそれぞれの完全なオブジェクトと同じファイル名、パス、拡張子、メタデータを有するが、完全なオブジェクトのデータを欠いているプレースホルダオブジェクトを格納することができる。プレースホルダオブジェクトのサイズは数バイト以下とすることができるが、一方、それぞれの完全なオブジェクトのサイズはかなり大きい可能性がある。クライアントデバイス150がオブジェクトにアクセスしようとした後、クライアント同期サービス156は、コンテンツ管理システム110からオブジェクトのデータを取得し、完全なオブジェクトをクライアントデバイス150に提供することができる。このアプローチは、コンテンツ管理システム110上のサブジェクトのオブジェクトへの完全なアクセスを提供したままでありながら、スペースと帯域幅の大幅な節約を提供することができる。
【0069】
上記で取り上げた同期の実施形態は、クライアントデバイス150とコンテンツ管理システム110のサーバに言及したが、ユーザアカウントは、任意の1つのクライアントデバイス150上のオブジェクトへの変更が、コンテンツ管理システム110とのそれぞれの同期を通じて他のクライアントデバイス150に伝搬することができるような、オブジェクトをコンテンツ管理システム110とすべてが同期させる任意の数のクライアントデバイス150を有することができることは、当業者であれば理解されるべきである。
【0070】
コラボレーション機能
【0071】
コンテンツ管理システム110の別の特徴は、サブジェクト間のコラボレーションを容易にすることである。コラボレーション機能には、オブジェクトの共有、オブジェクトに対するコメント、リアルタイムでのオブジェクトに対する共同作業、インスタントメッセージング、オブジェクトに関しての、プレゼンス及び「見られた」状態情報の提供などが含まれる。
【0072】
共有
【0073】
コンテンツ管理システム110は、共有サービス128又はリンクサービス136を介してオブジェクトの共有を管理することができる。共有サービスによるコンテンツの共有は、共有サービス128を使用してコンテンツをリンクし、各サブジェクトアカウントがそれぞれのアカウント内のオブジェクトにアクセスできるように、少なくとも1つの追加のサブジェクトアカウント(オブジェクトに関連付けられた元のサブジェクトアカウントに加えて)とコンテンツ管理システム110内でコンテンツを共有することを含むことができる。追加のサブジェクトアカウントは、コンテンツを受け入れることによってコンテンツにアクセスを得ることができ、コンテンツは、ウェブインタフェースサービス124を介して、又はクライアントデバイス150上のそれらのアカウントに関連付けられたディレクトリ構造内から直接アクセスすることができる。共有は、プラットフォームにとらわれない方法で実行されることができる。すなわち、コンテンツは、タイプ、能力、オペレーティングシステムなどが異なる複数のクライアントデバイス150にわたって共有されることができる。また、コンテンツはまた、様々な種類のサブジェクトアカウントにわたって共有されることもできる。
【0074】
コンテンツ管理システム110内でオブジェクトを共有するために、共有サービス128は、チーム又は1つ又は複数のサブジェクトアカウントのサブジェクトIDを、オブジェクトに関連付けられたオブジェクトデータベース148内のオブジェクトに関連付けることができ、したがって、追加のサブジェクトアカウントにオブジェクトへのアクセス権を付与することができる。共有サービス128はまた、サブジェクトアカウントのオブジェクトへのアクセスを制限するために、オブジェクトデータベース148内のオブジェクトへのアクセスを許可されているサブジェクトIDを削除することもできる。共有サービス128は、オブジェクトデータベース148に、オブジェクト識別子、オブジェクトへのアクセスを与えられたサブジェクト識別子、及びアクセスレベルを記録することができる。例えば、いくつかの実施形態では、単一のオブジェクトに関連付けられたサブジェクト識別子は、関連付けられたオブジェクトに関して、それぞれのサブジェクト識別子に異なるパーミッションを指定することができる。
【0075】
いくつかの実施形態では、コンテンツ管理システム110は、それぞれのオブジェクトに関連する完全なアクセス権の説明を含むアクセス制御リスト145を含むことができる。コンテンツ管理システム内のそれぞれのオブジェクトに対するアクセス制御リストは、オブジェクトデータベース148から導出されることができる。いくつかの実施形態では、それぞれのオブジェクトに対するアクセス制御リスト145は必要なときに導出できるので、それぞれのオブジェクトに対する永続的なアクセス制御リスト145を維持することは望ましくない。いくつかの実施形態では、オブジェクトは、先祖オブジェクトなどの別のオブジェクトからアクセス権を継承することができる。
【0076】
オブジェクトはまた、リンクによってアクセスできるように共有することもできる。リンクサービス136は、オブジェクトへのリンクを作成し、リンクの管理を処理し、ロギング、不正防止、サードパーティサービスとの統合、及び本明細書でさらに詳細に説明されるような他の機能などのリンク関連機能を実行することができる、ソフトウェア・アズ・ア・サービス・プラットフォームである。
【0077】
コンテンツ管理システム110の外部でオブジェクトを共有するために、リンクサービス136は、ユニフォームリソースロケータ(URL)などのカスタムネットワークアドレスを生成することができ、これは、任意のウェブブラウザがコンテンツ管理システム110内のオブジェクト又はコレクションにアクセスすることを可能にする。リンクサービス136は、生成されたURLにコンテンツ識別データを含めることができ、これは後に、要求されたオブジェクトを適切に識別して返すために使用され得る。例えば、リンクサービス136は、リンクで識別されるオブジェクトにアクセスする要求を受信し、リンク関連機能を実行し、ファイルシステム116と通信して、リンクに関連するアクセス許可を評価することができる。一旦、アクセスが決定されると、リンク呼び出し元がファイルシステム116からオブジェクトを取得するために使用され得る、オブジェクトIDと任意選択的にサブジェクトIDとを識別する、メッセージ内のファイルアクセストークンを返すことができる。
【0078】
URLを生成することに加えて、リンクサービス136は、オブジェクトデータベース148に、オブジェクトへのURLが作成されたことを記録するように構成することもできる。いくつかの実施形態では、オブジェクトに関連するオブジェクトデータベース148へのエントリは、オブジェクトへのURLが作成されたかどうかを示すURLフラグを含むことができる。例えば、URLフラグは、オブジェクトへのURLが作成されていないことを示すために0又はfalseに初期設定されたブール値であることができる。共有サービス128は、オブジェクトへのURLを生成した後、フラグの値を1又はtrueに変更することができる。また、共有サービス136は、リンクを識別する新しいサブジェクトIDをサブジェクトデータベース140に作成することができる。この動作により、リンクは、リンクファイルシステム116内のアクタとなる。本明細書で使用する場合、リンクのサブジェクトIDは、Link_sIDと呼ばれることがある。
【0079】
いくつかの実施形態では、共有サービス128は、オブジェクトに対するLink_sIDにパーミッションのセットを関連付けることができる。例えば、オブジェクトがURLを介してアクセスされる場合、共有サービス128は、そのオブジェクトに対するLink_sIDに関して関連付けられたパーミッションに基づいて、オブジェクトに対する限定された、パーミッションのセットを提供することができる。限定されたパーミッションの例は、サブジェクトがオブジェクトをダウンロードできない、オブジェクトを保存できない、オブジェクトをコピーできない、オブジェクトを修正できないなどの制限を含む。いくつかの実施形態では、制限されたパーミッションは、指定されたドメインから、すなわち企業ネットワークドメイン内から、又は指定されたドメインに関連付けられたアカウント、例えば企業アカウント(例えば、@acme.com)に関連付けられたアカウントによってのみ、オブジェクトがアクセスされることを許可する制限を含む。
【0080】
いくつかの実施形態では、リンクサービス136は、生成されたURLを非アクティブにするように構成することもできる。例えば、オブジェクトデータベース148への各エントリはまた、生成されたURLからのリクエストに応答して、コンテンツが返されるべきかどうかを示すURLアクティブフラグを含むこともできる。例えば、リンクサービス136は、URLアクティブフラグが1又はtrueに設定されている場合にのみ、生成されたリンクによって要求されたオブジェクトを返すことができる。従って、URLが生成されたオブジェクトへのアクセスは、URLアクティブフラグの値を変更することによって容易に制限され得る。これにより、オブジェクトを移動したり、生成されたURLを削除したりする必要なく、サブジェクトに対して共有オブジェクトへの制限されたアクセスを許可する。同様に、共有サービス128は、URLアクティブフラグの値を再び1又はtrueに変更することにより、URLを再アクティブ化することができる。従って、サブジェクトは、新しいURLを生成する必要なしに、オブジェクトに対するアクセスを容易に回復することができる。オブジェクトへのアクセスはまた、オブジェクトのLink_sIDに関連付けられたパーミッションステートメントを変更することによっても、変更することができる。これはまた、リンクが配布された後にも起こり得る。
【0081】
いくつかの実施形態では、コンテンツ管理システム110は、オブジェクトをアップロードするためのURLを指定することができる。例えば、サブジェクトアカウントを持つ第1のサブジェクトは、そのようなURLを要求し、投稿するサブジェクトにURLを提供し、投稿するサブジェクトは、URLを使用して、第1のサブジェクトのサブジェクトアカウントにオブジェクトをアップロードすることができる。
【0082】
リンクサービス136は、コンテンツ管理システム110の一部として提供されるサービスとして示されているが、リンクサービス136は、別個のサービスであってもよい。
【0083】
チームサービス
【0084】
いくつかの実施形態では、コンテンツ管理システム110はチームサービス130を含む。チームサービス130は、サブジェクトアカウントの定義されたチームを作成及び管理するための機能を提供することができる。チームは、サブチーム(事業部、プロジェクトチームなど)を持つ企業に対して作成されることができ、チーム及びサブチームに割り当てられたサブジェクトアカウント、又はチームは、任意の定義されたグループに対して作成されることができる。チームサービス130は、チームのための共通の共有スペース、プライベートなサブジェクトアカウントフォルダ、及びアクセス制限された共有フォルダを提供できる。チームサービス130はまた、管理者がチーム内のコレクション及びオブジェクトを管理するための管理インタフェースを提供し、チームに関連付けられたサブジェクトアカウントを管理することができる。チーム、サブチーム、サブジェクトアカウントはすべて、サブジェクトデータベース140にサブジェクト識別子が付与され、サブジェクトアカウントによるチームへのメンバシップもサブジェクトデータベース140に記録される。
【0085】
IAM(アイデンティティ及びアクセス管理)サービス
【0086】
いくつかの実施形態では、コンテンツ管理システム110は、IAMサービス132を含む。IAMサービス132は、サブジェクトアカウントを認証することができる。複数の権利レベル(例えば、サブジェクトの権利と管理者の権利を持つサブジェクトアカウント)を持つサブジェクトのアカウントの場合、IAMサービス132はまた、管理者による意図しない行動を避けるために、明示的な特権の昇格を促進することもできる。
【0087】
オブジェクトアクセス
【0088】
ファイルシステム116は、クライアントアプリケーション152から、オブジェクトにアクセスする要求に従うトークンを受け取ることができ、サブジェクトアカウントに許可されたケイパビリティを返すことができる。ファイルシステム116は、オブジェクトストレージ142とは別個のエンティティとして示されているが、ファイルシステム116への言及は、ファイルシステム116がオブジェクトストレージ142上でオペレーションを実行することを指すことができる。例えば、ファイルシステム116からオブジェクトの要求を行うというサブジェクトに対する言及は、ファイルシステム116が、アクセスが許可されているかどうかを判定し、オブジェクトストレージ142からオブジェクトを取得する操作を実行することを指す。従って、ファイルシステム116への言及は、ファイルシステム116及びオブジェクトストレージ142の集合体への言及の代替となり得る。
【0089】
プレゼンス及び「見られた」状態
【0090】
いくつかの実施形態では、コンテンツ管理システムは、オブジェクトが共有されているサブジェクトが、オブジェクトとどのように対話しているか、又は対話したかの情報を提供することができる。いくつかの実施形態では、コンテンツ管理システム110は、オブジェクトが共有されているサブジェクトが現在オブジェクトを閲覧していることを報告することができる。例えば、クライアントコラボレーションサービス160は、クライアントデバイス150がオブジェクトにアクセスしているとき、通知サービス117に通知することができる。次に、通知サービス117は、同じオブジェクトにアクセスする他のサブジェクトのすべてのクライアントデバイスに、オブジェクトに対するクライアントデバイス150のサブジェクトのプレゼンスを通知することができる。
【0091】
いくつかの実施形態では、コンテンツ管理システム110は、共有オブジェクトに対するサブジェクトの対話の履歴を報告することができる。コラボレーションサービス126は、メタデータ・データベース146及びオブジェクトデータベース148などのデータソースに照会して、サブジェクトがオブジェクトを保存したこと、サブジェクトがオブジェクトをまだ閲覧していないことなどを判定し、通知サービス117を使用してこのステータス情報を他のサブジェクトに配信して、誰が現在オブジェクトを閲覧中であるか、又は、閲覧もしくは変更したかを知ることができるようにすることができる。
【0092】
コラボレーションサービス126は、オブジェクトがコメント機能をネイティブにサポートしていなくても、コンテンツに関連するコメントを容易にすることができる。このようなコメントは、メタデータ・データベース146に格納されることができる。
【0093】
コラボレーションサービス126は、サブジェクトの通知を発し、送信することができる。例えば、あるサブジェクトがコメントで他のサブジェクトについて言及すると、コラボレーションサービス126は、そのサブジェクトに自分がコメントで言及されたことを知らせる通知を送信することができる。オブジェクトの削除、オブジェクトの共有など、様々な他のオブジェクトイベントが通知をトリガすることができる。
【0094】
コラボレーションサービス126はまた、サブジェクトがインスタントメッセージ、音声通話、電子メールなどを送受信できるメッセージングプラットフォームを提供することもできる。
【0095】
コラボレーションオブジェクト
【0096】
いくつかの実施形態では、コンテンツ管理サービスはまた、インタラクティブなオブジェクトコラボレーションプラットフォームを提供する、コラボレーションドキュメントサービス134も含むことができ、これにより、サブジェクトが同時にコラボレーションオブジェクトを作成し、コラボレーションオブジェクトにコメントし、コラボレーションオブジェクト内のタスクを管理することができる。コラボレーションオブジェクトは、サブジェクトがコラボレーションオブジェクトエディタを使用して作成及び編集できるファイルであることができ、コラボレーションオブジェクト要素を含むことができる。コラボレーションオブジェクト要素は、コラボレーションオブジェクト識別子、1つ以上の作成者識別子、コラボレーションオブジェクトテキスト、コラボレーションオブジェクト属性、対話情報、コメント、共有サブジェクトなどを含むことができる。コラボレーションオブジェクト要素は、データベースエンティティとして格納されることができ、これによりコラボレーションオブジェクトを検索及び取得することができる。複数のサブジェクトは、同時に、又は異なる時間に、コラボレーションオブジェクトにアクセスし、閲覧し、編集し、協働することができる。いくつかの実施形態では、これは、2人のサブジェクトがウェブインタフェースを介してオブジェクトにアクセスし、そこでオブジェクトの同じコピー上で同時に作業することを要求することによって管理されることができる。
【0097】
コラボレーションコンパニオンインタフェース
【0098】
いくつかの実施形態では、クライアントコラボレーションサービス160は、クライアントデバイス150上に提示されているオブジェクトに関連する情報を表示する目的で、ネイティブアプリケーションコンパニオンインタフェースを提供することができる。オブジェクトがコンテンツアプリケーション152によって管理されるように、オブジェクトがクライアントデバイス150のファイルシステムの指定された場所にある、クライアントデバイス150上に格納され実行されるネイティブアプリケーションによってオブジェクトがアクセスされる実施形態では、ネイティブアプリケーションは、上記のアドレス指定されたコラボレーションデータを表示するためのネイティブな方法を提供しなくてもよい。このような実施形態では、クライアントコラボレーションサービス160は、サブジェクトがオブジェクトを開いたことを検出し、コラボレーションデータなどのオブジェクトの追加情報を有するオーバーレイを提供することができる。例えば、追加情報は、オブジェクトに対するコメント、オブジェクトのステータス、オブジェクトを以前に又は現在閲覧している他のサブジェクトのアクティビティなどを含めることができる。このようなオーバーレイは、他のサブジェクトがオブジェクトを現在編集しているため、変更が失われる可能性があることをサブジェクトに警告することができる。
【0099】
いくつかの実施形態では、上述したサービス又はストレージ/データベースの1つ以上は、公開又は非公開のアプリケーション・プログラミング・インタフェースを使用してアクセスされ得る。
【0100】
特定のソフトウェアアプリケーションは、サブジェクトに代わってAPIを介してオブジェクトストレージ142にアクセスすることができる。例えば、クライアントデバイス150上で実行されるアプリケーションなどのソフトウェアパッケージは、サブジェクトが認証資格情報を提供するときに、コンテンツを読み出す、書き込む、作成する、削除する、共有する、又はその他の操作を行うために、コンテンツ管理システム110にプログラム的にAPIコールを直接行うことができる。
【0101】
サブジェクトは、ウェブインタフェースサービス124によって生成され、提供されるウェブインタフェースを介して、サブジェクトアカウントに格納されたコンテンツを閲覧又は操作することができる。例えば、サブジェクトは、コンテンツ管理システム110によって提供されるウェブアドレスにウェブブラウザでナビゲートすることができる。オブジェクトの新しいバージョンをアップロードするなど、ウェブインタフェースを通じて行われたオブジェクトストレージ142内のコンテンツに対する変更又は更新は、サブジェクトのアカウントに関連付けられた他のクライアントデバイスに反映されることができる。例えば、それぞれが独自のクライアントソフトウェアを有する複数のクライアントデバイスを単一のアカウントに関連付けることができ、アカウント内のオブジェクトを、複数のクライアントデバイスのそれぞれの間で同期させることができる。
【0102】
クライアントデバイス150は、サブジェクトに代わって、コンテンツ管理システム110に接続することができる。サブジェクトは、例えばクライアントデバイス150がデスクトップ又はラップトップコンピュータ、電話、テレビ、IoTデバイスなどである場合、クライアントデバイス150と直接対話することができる。代替的又は追加的に、クライアントデバイス150は、例えばクライアントデバイス150がサーバである場合、サブジェクトがクライアントデバイス150に物理的にアクセスすることなく、サブジェクトに代わって動作することができる。
【0103】
クライアントデバイス150のいくつかの特徴は、クライアントデバイス150にインストールされたアプリケーションによって有効にされる。いくつかの実施形態では、アプリケーションは、コンテンツ管理システム固有の構成要素を含むことができる。例えば、コンテンツ管理システム固有の構成要素は、スタンドアロンアプリケーション152、1つ以上のアプリケーションプラグイン、及び/又はブラウザ拡張であり得る。しかしながら、サブジェクトは、クライアントデバイス150上に常駐し、コンテンツ管理システム110と通信するように構成されたウェブブラウザなどのサードパーティアプリケーションを介して、コンテンツ管理システム110と対話することもできる。様々な実装形態において、クライアント側アプリケーション152は、サブジェクトがコンテンツ管理システム110と対話するためのサブジェクトインタフェース(UI)を提示することができる。例えば、サブジェクトは、ファイルシステムと統合されたファイルシステムエクスプローラを介して、又はウェブブラウザアプリケーションを使用して表示されたウェブページを介して、コンテンツ管理システム110と対話することができる。
【0104】
いくつかの実施形態では、クライアントアプリケーション152は、コンテンツ管理システム110の複数のアカウントのコンテンツを管理し、同期するように構成されることができる。このような実施形態では、クライアントアプリケーション152は、複数のアカウントにログインしたままで、複数のアカウントのために通常のサービスを提供することができる。いくつかの実施形態では、各アカウントはファイルシステム内のフォルダとして表され、そのフォルダ内のすべてのオブジェクトをコンテンツ管理システム110と同期させることができる。いくつかの実施形態では、クライアントアプリケーション152は、複数のアカウントのうちの1つをプライマリアカウント又はデフォルトアカウントに選択するセレクタを含むことができる。
【0105】
サードパーティサービス
【0106】
いくつかの実施形態では、コンテンツ管理システム110は、ワークスペースサービス、電子メールサービス、タスクサービスなどの1つ以上のサードパーティサービスとインタフェースする機能を含むことができる。そのような実施形態では、コンテンツ管理システム110は、コンテンツ管理システム110によって提供される様々なサブジェクトインタフェースにそれらのサードパーティサービスからの機能又はデータをもたらすためにサードパーティサービスと対話するための、サードパーティサービスのサブジェクトアカウントのログイン認証情報を提供され得る。
【0107】
いくつかの実施形態では、サードパーティサービスはまた、リンクサービス136を介してコンテンツ管理システム110と対話することもでき、サードパーティサービスは、リンクサービス136によって、それに代わってリンクを作成するよう要求することができる。
【0108】
コンテンツ管理システム110は特定の構成要素で示されているが、当業者であれば、システム100のアーキテクチャ構成は単に1つの可能な構成であり、より多くの又はより少ない構成要素を有する他の構成が可能であることを理解するべきである。さらに、サービスは、別のサービスにあるものとして説明された機能さえも含む、より多くの又はより少ない機能を有することができる。さらに、ある実施形態に関して本明細書で説明した特徴は、別の実施形態に関して説明した特徴と組み合わせることができる。
【0109】
システム100は特定の構成要素で示されているが、当業者であれば、システム100のアーキテクチャ構成は単に1つの可能な構成であり、より多くの又はより少ない構成要素を有する他の構成が可能であることを、理解すべきである。
【0110】
図2は、いくつかの実施形態による、コンテンツ管理システム110の追加の詳細を示す。例えば、図2は、上述したように、他の機能の中でも、オブジェクトストレージ142内のどこにオブジェクトが格納されるかを決定するように構成されるファイルシステム116を示す。
【0111】
オブジェクトストレージ142は、複数のオブジェクトストレージシャード142nに分割され、各シャードに関連付けられるのは、オブジェクトデータベース148の一部であるものとして示されている。オブジェクトは、様々なオブジェクトストレージシャード142nにわたって分散され、特定のオブジェクトストレージシャード142n上のオブジェクトに関連するデータは、同じシャード上に格納されるオブジェクトデータベース148の部分にも格納される。複数のシャードにわたるオブジェクトストレージデータベース142のこの分散を容易にするために、ファイルシステム116は、オブジェクトデータベース148に書き込まれるべきデータを、適切なシャード上のオブジェクトデータベースの適切な部分に指示することができる。さらに、オブジェクトが1つのオブジェクトストレージシャード142nから別のオブジェクトストレージシャード142nに移動されるとき、ファイルシステム116は、シャード間でオブジェクトを移行することと、そのオブジェクトに関連するオブジェクトデータベース148内のデータを新しいオブジェクトストレージシャード142nに移行することとの両方を担当する。
【0112】
図2はまた、ファイルシステム116及びサブジェクトデータベース140と通信するIAMサービス132を示す。本明細書でさらに説明するように、IAMサービス132は、オブジェクトに関連するアクセス情報を決定するために、ファイルシステム116及びオブジェクトデータベース148と対話することができる。IAMサービス132はまた、認証及びアクセスサービスを実行するために、サブジェクトデータベース140と対話することもできる。
【0113】
図2はまた、図1に関連して説明したサービスの任意の1つのサービス、又は、本明細書でさらに説明する1以上の機能を実行するために、ファイルシステム116、オブジェクトデータベース148、又はメタデータ・データベース146と対話する必要があり得るか、さもなくばこれらのクライアントである必要があり得る他のサービスを一般的に示したものでもある。
【0114】
図2はまた、リンクサービス136によって実行される様々な機能を利用するために、クライアントデバイス150、ファイルシステム116、サードパーティサービス170、及びレガシーリンクサービス135によって呼び出されることができるインタフェースを提供する1つ以上のAPI138を有するリンクサービス136をも示したものである。
【0115】
リンクサービス136は、オブジェクトへのリンクの作成を扱うことができ、様々なリンクサービスを提供することができるソフトウェア・アズ・ア・サービス・プラットフォームである。リンクサービス136の最も基本的な機能は、API138を介して、リンクを作成して発行する要求を受け取ることである。このような要求を受け取ると、リンクサービス136は、URLに関するメタデータを用いて、オブジェクト及び/又はエンティティに対して、URLを作成及び/又はマッピングすることができる。いくつかの実施形態では、リンクサービス136はまた、リンクの有効期限、パスワード、閲覧者などのリンク設定の作成及び実施を処理することもできる。リンクサービス136はまた、誰があるオブジェクトへのリンクを作成できるかを制御することができ、検証されていないユーザのためのリンク作成を防止することもできる。リンクサービス136は、任意のリンクが、オブジェクトに関連付けられた他の共有ポリシー又はアクセスポリシーに適合することを保証することができる。
【0116】
リンクサービス136の別の重要な機能は、リンク呼び出し元によって呼び出されたURLによってマップされるメタデータのオブジェクトにアクセスするための要求を、API138を介して受信することである。このような要求を受信することは、リンクの基本的な検証や要求されたコンテンツの提供以上のものが含まれる。リンクサービス136はまた、レート制限(リンクが呼び出され得る頻度又は速度を制限する)、不正防止、リンクの禁止、分析、メトリック及びロギング、リンク送信者及び訪問者のトラッキング、監査ロギングに関連する機能も実行できる。リンクサービス136はまた、リンクを管理するための管理者インタフェースも提供することもできる。
【0117】
いくつかの実施形態では、リンクサービス136は、ファイルシステム116のロジックを利用して、リンク呼び出し元が、リンクが参照するオブジェクトにアクセスできるかどうかを判定する。例えば、リンクサービス136は、ファイルシステム116を利用して、リンク呼び出し元が、リンクが参照するオブジェクトにアクセスすることを可能とすべきかどうかを判定することができる。本明細書で取り上げるように、リンクサービスは、ファイルシステム116内のアクタ(すなわち、サブジェクトID、sID、又は特にリンクを参照するときは、link_sID)としてリンクを確立することができ、link_sIDは、パーミッションステートメント内の指定されたパーミッションと関連付けられる。
【0118】
いくつかの実施形態では、リンクサービス136は、リンク呼び出し元が、リンクが参照するオブジェクトにアクセスできるかどうかを判定するためにファイルシステムの外部のロジックを利用し、リンクサービス136は、リンク呼び出し元がオブジェクトにアクセスすることができるべきであるかどうかを判定するためにサードパーティサービス170を利用することができる。この例の文脈におけるサードパーティサービスは、コンテンツを生成するサービスであり得るが、コンテンツを共有するためにリンクサービスを利用するサービスであるかもしれない。サードパーティサービス170はまた、サードパーティサービス170で生成されたコンテンツを保存するために、コンテンツ管理システム110を使用することもあり得る。この例の文脈におけるサードパーティサービス170はまた、オブジェクトを生成しないサービスであり得るが、その代わりに、オブジェクトが関連する、文書の署名、ビデオ会議、ワークフローなどのサービスを提供するサービスであってもよい。リンク呼び出し元がオブジェクトにアクセスすることができるとすべきかどうかを判定するためにサードパーティサービス170を利用することは、サードパーティサービスがリンクを発行するためにリンクサービス136を利用するが、サードパーティサービス170がリンクの管理の一部を共有したい場合に特に有用である。この例はまた、サードパーティサービス170がリンクを発行したが、リンクを管理するためにリンクサービス136を利用したい場合にも有用である。
【0119】
リンク呼び出し元が、リンクが参照するオブジェクトにアクセスできるかどうかを判定するためにファイルシステムの外部のロジックを利用する別の例では、リンクサービス136は、リンク呼び出し元がオブジェクトにアクセスできるべきかどうかを判定するためにレガシーリンクサービス135を利用することができる。この例は、発行されたリンクが、リンクサービス136によって提供されるアクセスロジックとは異なるアクセスロジックを利用する場合に特に有用である。このようにして、レガシーリンクは、リンク呼び出し元が期待するユーザ体験を提供し続けることができ、一方、リンクサービス136は、リンクの管理とメンテナンスを引き継ぐことができる。
【0120】
いくつかの実施形態では、リンクサービス136は、いくつかのリンクをサポートするために、サードパーティサービス170又はレガシーリンクサービス135によって提供されるロジックとともにファイルシステム116のロジックを利用することができる。
【0121】
図3は、いくつかの実施形態による、オブジェクトデータベース148の例を示す。オブジェクトデータベース148は、テーブル及びインデックスの集合から構成され得るが、図3は、アクセス制御リスト(ACL)テーブル202及びオブジェクトテーブル212を示す。
【0122】
オブジェクトデータベース148のテーブルはすべてキーバリューストアであるが、本技術はこのようなデータ構造に限定されるべきではない。オブジェクトデータベース148のすべてのテーブルは、オブジェクトID(oID)及びハイブリッド論理クロック(HLC)を参照する。オブジェクトデータベース148内のテーブルにおいて、oIDとHLCは、オブジェクトデータベース148内の様々なテーブルにおいてルックアップを実行するためのキーを構成する。
【0123】
oIDはオブジェクトのIDである。オブジェクトは一般に、ファイルシステムに記録され得る任意のエンティティである。ハイブリッド論理クロック(HLC)は、タイムクロックと論理クロックの側面を併せ持つクロック値である。HLCは、特定のマシン上のすべてのイベントが発生した順に記録することを保証し、また、受信マシン上の送信後のすべてのイベントが、送信マシン上の送信前のイベントの後に順番に記録されることを保証する。
【0124】
前置きしたように、オブジェクトデータベース148は、いくつかのテーブルから構成され得る。ACLテーブル202は、オブジェクトに関連するパーミッション(アクセスを含む)のすべての変更を記録するように最適化されている。いくつかの実施形態では、パーミッションは、サブジェクト、アクション、ケイパビリティ、及び継承のタプルの項目で表現され、これらはすべてACLテーブル202に記録される。この説明全体を通してタプルへの参照が使用されているが、当業者であれば、値のコレクションを表す任意の仕組みが使用できることを理解するだろう。
【0125】
サブジェクト(サブジェクトID(sID)によって識別される)は、コンテンツ管理システム内の任意のアクタに関係する。リンクの場合、サブジェクトIDはlink_sIDと呼ばれることがある。アクタは、個人のサブジェクトアカウント、個人のアカウントにマッピングされるチーム又はグループ、チームにマッピングされる組織、グループのグループ、リンク、デバイス、組織、サードパーティサービス170、又は任意のエンティティなどであり得る。いくつかの実施形態では、複数のサブジェクトIDはパーミッションステートメントにリストされ得る。
【0126】
アクションは、サブジェクトがケイパビリティを実行することを許可されるか許可されないかを定義し、他の要因に条件付けられ得る。以下の表は、いくつかのアクション例について説明したものである。
これらのアクションを組み合わせることで、高度にカスタマイズされたパーミッションステートメントを作成する能力を提供する。上述したように、本技術は、潜在的なパーミッションの幅広いアレイをサポートすることによって、及び、非常に効率的なシステムにおける多種多様なパーミッションの組織スキームを考慮することによって、先行技術に対する改善を提供する。いくつかのエンティティアカウントは、汎用のトップレベルルールによって統治されるかもしれないが、例外が必要な場合もあるかもしれない。例えば、組織アカウントは、共有が組織内であることに限って、チームメンバーによるオブジェクトの共有を許可するかもしれない。このポリシーは、組織のアカウント内のすべてのオブジェクトに適用されるトップレベルのポリシーである。しかし、例外が作成される必要な場合もあり得、上記のアクションはそのような例外を許可する。
【0127】
いくつかのアクションはまた、継承も参照している。ACLテーブル202はまた、オブジェクトが他のオブジェクトからパーミッションを継承すべきかどうかを参照する、継承順序に関する列も含んでいる。ほとんどのコンテンツ管理システムは、ツリー・ディレクトリ構造において、すべてのノードがその直近の先祖からパーミッションを継承する、ラスト継承(inherit last)スキームに従っている。しかし、本技術では、ディレクトリ構造の最上位からの継承、直接の先祖からの継承(ラスト継承)、又はパーミッションをまったく継承しないことのいずれかをサポートすることができる。これらの継承スキームの組合せはまた、任意のオブジェクトに対して可能な高度にカスタマイズされたパーミッションにも寄与する。すべてのオブジェクトが、ディレクトリツリー内のその下にあるすべてのオブジェクトに適用される最上位のポリシーと考えられるファースト継承(inherit-first)のパーミッションステートメントに従うことも可能であり、一方、また、その直近の先祖から一部のプロパティを継承することも可能である。また、特定のオブジェクトが、ファースト継承又はラスト継承パーミッションステートメントのいずれも継承しないことも可能である。場合によっては、サブジェクトが、ディレクトリ構造内のいかなる先祖オブジェクトや子オブジェクトにアクセスすることなしに、オブジェクトにアクセスすることも可能である。
【0128】
ACLテーブル202のケイパビリティ値は、どのような特権が影響を受けるかを定義する。ケイパビリティ列の特権は、アクション列及び継承列と組み合わせて定義される。以下の表は、(「パーミッション」アクションと組み合わされた場合の)いくつかのケイパビリティの例を特定し、説明するものである。
【0129】
sID、アクション、ケイパビリティ、及び継承の列は、集合的に、オブジェクトに関連する特定のパーミッションステートメントを構成するタプルを表す。各行は、指定されたハイブリッド論理クロック値で影響を受けたオブジェクトIDに関連するこれらのタプルの複数を含むことができる。
【0130】
パーミッションは、後の時点(後のハイブリッド論理クロック値)でオブジェクトIDに対して追加又は変更することができ、それらのパーミッションステートメントは、オブジェクトID及びハイブリッド論理クロック値に関連する新しい行にリストされることができる。
【0131】
リンクの場合、リンクを作成する能力は、オブジェクトを統治する既存のパーミッションステートメントによって統治され得る。例えば、オブジェクトが既存のパーミッションステートメントを持つオブジェクトストレージ142に存在する場合、リンクを作成する能力は、アクセスするユーザがリンクを作成することを許可されているかどうかに依存する。
【0132】
いくつかの実施形態では、リンクを共有する目的のためだけに、新しいオブジェクトをオブジェクトストレージ142に格納することができる。例えば、リンクサービス136は、ファイルシステム116と対話することによって、オブジェクトをコンテンツストレージ142に格納することができる。
【0133】
リンクサービス136がオブジェクトストレージ142内のオブジェクトへのリンクを作成することを許可されると、パーミッションステートメントタプル内のアクタとしてリンクを識別するlink_sIDを作成するために、リンクサービス136は、ファイルシステム116とインタフェースする。リンクがファイルシステム116によって認識されるアクタであることを可能とすることは、リンクによって指定されたオブジェクトへのアクセスが、リンクが有効であり続けるためにリンクを作成したエンティティによる継続的なアクセスを必要としないという利点を提供する。例えば、リンクを作成したエンティティがオブジェクトへのアクセスを失っても、リンクは機能し続けることができる。別の利点として、リンクはファイルシステム116によって認識されるアクタであるため、匿名のユーザでもリンクを介してオブジェクトに依然としてアクセスできる。ファイルシステム116及びリンクサービス136は、ファイルシステムへの別のユーザのアクセスのプロキシを介したアクセスを提供する代わりに、匿名のユーザによってオブジェクトがアクセスされることを認識する。
【0134】
コンテンツ管理システムのコンテキストにおいて所定のオブジェクトのケイパビリティを参照する場合、オブジェクトに提供されるすべてのパーミッションの定義であるアクセス制御リスト(ACL)を参照するのが一般的である。本技術のいくつかの実施形態では、ACLは格納されないが、以下の図7に関して説明されるように、ACLは導出され得る。
【0135】
図3はまた、オブジェクトに加えられた変更に関する情報を記録するオブジェクトテーブル212を示す。オブジェクトテーブル212はまた、オブジェクトIDと、オブジェクトを識別するためのハイブリッド論理クロックと、変更が発生したシステム時刻の列も含む。オブジェクトに加えられた変更を記録することに加えて、オブジェクトテーブル212は、特定の時間におけるオブジェクトのバージョンを識別するために使用され得る。
【0136】
オブジェクトテーブル212は、ハイブリッド論理クロック値が対応できる、変更時刻と呼ばれる、おおよその日付と時刻を識別するためにも使用され得る。変更時刻は、変更が行われたクロック時刻(日付と時刻)を表す。
【0137】
オブジェクトテーブル212はまた、オブジェクトのタイプを識別する列も含む。例えば、列は、オブジェクトがファイルであるかディレクトリであるかを示すことができる。いくつかの実施形態では、オブジェクトに対する変更は、オブジェクト自体を変更するものでなくてもよく、別のディレクトリの下にディレクトリをマウントすることであってもよい。マウントの例では、オブジェクトのタイプは、オブジェクトがマウントされるディレクトリのターゲットオブジェクトIDをリストすることができる。上述したように、図3のテーブルは、アクセス、同期、及びバージョン管理のタスクを実行するために不可欠な情報をまとめて記録している。図3のテーブルは、非常に効率的であるように構成され、コンテンツ管理システムの本質的なタスクの効率的な実行に必要でないデータはこれらのテーブルから除外されている。さらに、これらのテーブルは、これらのテーブルに書き込む必要がある頻度や状況を最適化するために、個別に維持される。
【0138】
図4はサブジェクトデータベース140を示す。図2では、サブジェクトデータベース140はオブジェクトストレージ142の外部に格納されているように示されているが、いくつかの実施形態では、サブジェクトデータベース140は、オブジェクトデータベース148とまさに同様に、オブジェクトストレージ142のシャード142nにわたって格納できることが理解されよう。
【0139】
サブジェクトデータベース140は、サブジェクトに関する必須情報を追跡するように構成される。サブジェクトは、コンテンツ管理システム110のアカウントを持つ可能性のある、及び/又は、オブジェクトにアクセスしたり、オブジェクトに対してアクションを起こしたりする可能性のある、任意のエンティティであり得る。いくつかの実施形態では、リンクは、オブジェクトにアクセスすることができ、オブジェクトに対してアクションを起こすことができるので、サブジェクトであり得る。サブジェクトデータベース140は、いくつかの異なるテーブルに分割することができ、又は、図4に図示されていない追加情報を含むことができる。
【0140】
サブジェクトテーブル250は、サブジェクトテーブル250にサブジェクトID(sID)として表されるサブジェクトに関する情報を記録するように構成される。sIDが存在するようになるか、sIDが削除されるか、又はサブジェクトテーブル250に記録されたデータの他の側面が変更されると、いつでも、新しい行がサブジェクトテーブルに書き込まれ得る。図4では、sID:ZとsID:ILLは、link_sIDである。
【0141】
sIDを含むサブジェクトテーブル250の列に加えて、サブジェクトテーブル250はまた、行を引き起こす変更が影響を受けたシステム時間を記録できるハイブリッド論理クロック(HLC)の列も含む。
【0142】
サブジェクトテーブル250は、そのsIDによって表されるサブジェクトアカウントに関する情報を記録する様々なサブジェクトフィールドも含む。例えば、サブジェクトテーブル250は、サブジェクトアカウントに関連付けられたサブジェクト名又はアカウントに関連付けられた電子メールアドレスのサブジェクトフィールドも含むことができる。サブジェクトがリンクである場合、サブジェクト名は空白であるか、「リンク」と書かれているか、図4に示されているようにリンクサービス136によって提供されるリンクIDを含むことができる。
【0143】
いくつかの実施形態では、サブジェクトテーブル250は、サブジェクトアカウントが特定のドメインに属するかどうかも記録できる。例えば、サブジェクトアカウントが、コンテンツ管理システムにもサブジェクトアカウントを持つ組織に関連付けられている場合、サブジェクトテーブル250は、サブジェクトアカウントとそのドメインとの間のマッピングを記録することができる。サブジェクトがリンクである場合、サードパーティサービス:ldct.comに関連付けられているLink_sID:ILLについて示したように、サードパーティサービス170がリンクを作成したときのドメインを記録することができる。
【0144】
サブジェクトテーブル250は、サブジェクトIDが親サブジェクトIDによって管理又は制御されているかどうかを示す列も含む。ちょうどオブジェクトが特定のプロパティを継承することができる先祖を持つことができるように、サブジェクトもまた親を持つことができる。サブジェクトの親は、サブジェクトに制限や許可を与えることによってなど、サブジェクトを管理する権限を持つサブジェクトアカウントである可能性がある。いくつかの実施形態では、サブジェクトはまた親サブジェクトから特定のプロパティを継承することもできる。サブジェクトがリンクである場合、オブジェクトがリンクを介して共有されるためだけに存在する場合、それは親サブジェクトに関連付けられていない可能性があり、Link_sIDが、リンクを作成したサブジェクトを親として持つ可能性がある。リンクを作成したサブジェクトは、コンテンツ管理システムの別のユーザアカウントを表すサブジェクト、リンクサービス136を表すサブジェクト、リンクを作成又は管理するためにリンクサービス136を利用するサードパーティサービス170を表すサブジェクトである可能性がある。
【0145】
サブジェクトテーブル250はまた、ルートオブジェクトIDを示す列も含む。いくつかの実施形態では、sIDによって表されるすべてのサブジェクトアカウントは、そのアカウントのルートとして現れてもよいそれ自身のプライベートディレクトリと関連付けられることができる。同時に、他のルートオブジェクトを、そのサブジェクトのルートオブジェクトの下のサブジェクトアカウントのディレクトリ構造にマウントすることができる。例えば、サブジェクトアカウントは、"root subject"と呼ばれるルートディレクトリを持つと同時に、そのサブジェクトアカウントはグループの一部である可能性がある。グループ自体は、"group"という独自のルートディレクトリを持つことができる。グループルートディレクトリは、"/root subject/group"のようなディレクトリ構造に見えるように、サブジェクトのルートディレクトリの下にマウントできる。別のケースでは、サブジェクトアカウントが組織のサブジェクトアカウントに厳密に結び付けられる場合、サブジェクトアカウントのルートは組織のルートの下に現れることがある。例えば、組織に"organization"というルートディレクトリがある場合、サブジェクトのディレクトリ構造は"/organization/root subject"のように見える。あるルートディレクトリと別のルートディレクトリの具体的な関係は、純粋に実装の1つである。しかし、これらの例は、各サブジェクトアカウントがそれ自体のルートディレクトリを持つこと、及び、任意のルートディレクトリが別のルートディレクトリ内にマウントされることがあり、その結果、それがサブジェクトアカウントのルートであっても別のディレクトリに従属するように見えることを示している。
【0146】
オブジェクトストレージ142に既に存在し、従って、少なくとも1つの他のサブジェクトに関連付けられたルートディレクトリの下にそのオブジェクトが既に位置しているオブジェクトへのリンクが作成された場合、リンクによって共有されるようになったオブジェクトは、他のサブジェクトに関連付けられたルートディレクトリの下の現在の場所に位置したままにすることができる。Link_sIDは、他のサブジェクトに関連付けられたルートディレクトリの下の現在の場所に位置するオブジェクトへのアクセスを認められ得る。一部の実施形態では、ファイルシステム116はまた、Link_sIDのためのルートディレクトリを作成することもできるが、そのディレクトリは、オブジェクトが現在の場所に配置されているため、オブジェクトを含まない可能性がある。むしろ、Link_sIDのルートディレクトリは、いくつかの実施形態では、別のサブジェクトのためのディレクトリ内のその場所にあるオブジェクトを表すポインタ又は参照を含み得る。
【0147】
ファイルシステム116は、オブジェクトへのアクセスに関連付けられた複雑なポリシーを扱うことができる。例えば、ポリシーは、匿名のリンク呼び出し元には読み取りアクセスのみを許可し、一方、ファイルシステム116に知られている識別されたsIDを持つリンク呼び出し元には書き込み可能アクセスを許可するように、オブジェクトに関連付けることができる。オブジェクトがその所有者によって変更されるかもしれない一方で、リンク呼び出し元は静的ドキュメントへのアクセスしか持たないように、リンク呼び出し元にオブジェクトの特定のバージョンへのアクセスのみを許可することも可能である。
【0148】
サブジェクトテーブル250は、sIDの識別とHLC値の範囲を受信することによってクエリされ、そのようなクエリは、サブジェクトテーブル250の別の列に示される任意の情報を返すことができる。限定されたフィールドがサブジェクトテーブル250の列として示されているが、追加のフィールドも含まれ得ることは当業者によって理解されよう。
【0149】
図5は、リンクサービスによって管理されるリンクによって参照されるオブジェクトにアクセスするための例示的な方法を示し、図6は、リンクサービスによって管理されるリンクによって参照されるオブジェクトにアクセスするための例示的なシーケンス図を示す。例示の方法及びシーケンス図は、動作の特定のシーケンスを描いているが、シーケンスは、本開示の範囲から逸脱することなく変更することができる。例えば、描かれている動作のいくつかは、並行して、又は本技術の機能に実質的に影響を与えない異なる順序で実行されてもよい。他の例では、本技術を実施する例示的なデバイス又はシステムの異なる構成要素は、実質的に同時に又は特定の順序で機能を実行してもよい。図5図6を一緒に説明する。
【0150】
最初に、リンク呼び出し元はノード301でリンクをアクティブ化し、その結果、リンクによって参照されるオブジェクトにアクセスする要求が生じる。要求は、オブジェクトを要求するためにAPI138を指すことができ、LinkUrlに埋め込まれたデータを含むことができ、リンク呼び出し元がコンテンツ管理システム110とのセッションに関連付けられている場合、任意でサブジェクトIDを含むことができる。
【0151】
本明細書で使用されるように、リンク呼び出し元は、識別することができないユーザ(匿名ユーザ)を有するクライアントデバイス、コンテンツ管理システム110との確立されたセッションを有するクライアントデバイス、コンテンツ管理システム110のソフトウェアサービス、又はサードパーティサービス170であり得る。
【0152】
いくつかの実施形態では、本方法は、ノード305において、第1のクライアントデバイスからリンクによって参照されるオブジェクトにアクセスする要求を受信することを含む。例えば、リンクサービス136は、第1のクライアントデバイスからリンクによって参照されるオブジェクトにアクセスする要求を受信することができる。いくつかの実施形態では、要求は、リンクサービス136に転送される前にAPI138に向けられる。
【0153】
オブジェクトにアクセスする要求を受信した後、リンクサービス136は、リンクを検証し、及び/又は他のリンクサービスを実行することができる(308)。いくつかの実施形態では、リンクサービス136は、リンクが現在有効なリンクであるかどうか、リンクが適切なオブジェクトを参照しているかどうかを判定すること、及び様々なリンクメタデータを調べることによって、リンクを検証することができる。リンクメタデータは、link_sID、リンクプロパティ、リンクケイパビリティ(オブジェクトの取得、リンクの変更など)を判定することを含むことができる。いくつかの実施形態では、リンクサービス136は、以下でさらに説明するように、様々なリンクサービスを実行することもできる。リンクサービスのいくつかの例は、リンクロギング、エクスプロイト防止、リンク禁止、レートスロットリングなどである。
【0154】
リンクサービス138はまた、ノード310において、リンク呼び出し元をユーザアカウント又は匿名アカウントとして識別することができる。例えば、リンクサービス136は、リンク呼び出し元をコンテンツ管理システム110のユーザアカウントとして識別することができ、又は、ユーザアカウントが識別されない場合、リンクサービス136は、リンク呼び出し元が匿名であると判定することができる。いくつかの実施形態では、リンクサービス136は、クライアントデバイスがコンテンツ管理システム110とのセッションに関連付けられている場合、コンテンツ管理システム110のユーザアカウントを識別することができる。いくつかの実施形態では、オブジェクトにアクセスする要求は、ユーザアカウントのsIDを含むことができる。いくつかの実施形態では、リンクサービス136は、クライアントデバイス150に関連付けられたユーザアカウント及びsIDを識別するために、IAMサービス132と対話することができる。
【0155】
しかしながら、いくつかの実施形態では、リンクサービス136は、オブジェクトにアクセスする要求に関連付けられた匿名ユーザアカウントであることを識別することができる。例えば、リンクを呼び出すクライアントデバイスが、コンテンツ管理システム110とのセッションに関連付けられていないか、さもなければIAMサービス132に知られていない場合、リンクサービス136は、既知のユーザアカウントを識別することができない可能性があり、リンク呼び出し元は匿名であると考えることができる。
【0156】
リンク呼び出し元が識別されたユーザアカウントであるか匿名ユーザであるかにかかわらず、リンクは、リンクのlink_sIDを参照するか、リンクのlink_sIDに関連付けることができる。
【0157】
リンクサービス136が、ユーザアカウントの任意のsID(もしあれば)及びリンク自体に関連するlink_sIDを抽出又は学習すると、ノード315において、リンクサービス136は、オブジェクトストレージ142内のオブジェクトの識別情報と、オブジェクトにアクセスするためのファイルシステム116内のパーミッションを提供する可能性がある任意のsID又はlink_sIDを含むファイルシステム認証トークンとを含むファイルシステムアクセスオブジェクトをクライアントデバイス150に返すことができる。例えば、リンクサービス136は、リンクのlink_sIDを認証トークンに含めることができ、識別されたユーザアカウントに関連する任意のsID(もしあれば)を認証トークンに含めることができる。認証トークンは、ファイルシステム116への一時的なアクセスをリンク呼び出し元に与える。
【0158】
本方法は、ノード335において、認証トークンとファイルシステム内のオブジェクトの識別情報とを含むファイルシステムアクセスオブジェクト335を、第1のクライアントデバイスに送信することをさらに含む。例えば、リンクサービス136は、認証トークンとファイルシステム内のオブジェクトの識別情報とを含むファイルシステムアクセスメッセージを、第1のクライアントデバイス/リンク呼び出し元に送信することができる。ファイルシステムアクセスオブジェクトはまた、オブジェクトを取得したり、リンクのパーミッションを変更したりするためにファイルシステムの1つ以上のAPIにアクセスしたり、リンクを削除するなど他のリンクプロパティを変更するためにリンクサービス136と対話したりするようにリンク呼び出し元に指示するメタデータも含むことができる。
【0159】
ファイルシステムアクセスオブジェクトを受信すると、クライアントデバイス150は、ファイルシステムからオブジェクトを直接要求することができる(338)。いくつかの実施形態では、本方法は、ノード340において、ファイルシステムアクセスメッセージで識別されたオブジェクトにアクセスする要求を、リンク呼び出し元から受信することを含む。例えば、ファイルシステム116は、ファイルシステムアクセスメッセージで識別されるオブジェクトにアクセスする要求をリンク呼び出し元から受信することができる。ファイルシステムアクセスオブジェクトは、認証トークンと、ファイルシステム内のオブジェクトの識別情報とを含むことができる。上述のように、認証トークンは、リンク呼び出し元によって使用されたリンクを検証したリンクサービス136によって発行された。
【0160】
いくつかの実施形態では、本方法は、ノード345において、認証トークンが、link_sIDに加えて、オブジェクトのアクセスパーミッションにおいてアクセスを許可されたユーザアカウントのサブジェクトID(sID)を識別するかどうかを判定することを含む。例えば、ファイルシステム116は、認証トークンがサブジェクトIDを識別するか否かを判定することができる。ファイルシステム116が、ユーザアカウントのサブジェクトID(sID)が認証トークンに含まれると判定すると、ファイルシステム116は、サブジェクトデータベース140又はオブジェクトデータベース148の更新が必要かどうかを判定することができる。例えば、ファイルシステム116が、認証トークンがlink_sIDに加えてユーザアカウント(sID)を識別すると判定した場合、ノード325において、ファイルシステム116は、ユーザアカウントのサブジェクトID(sID)を、サブジェクトデータベース140内のリンクのlink_sIDのメンバとして関連付けることができ、これにより、ユーザアカウントのサブジェクトIDは、リンクのlink_sIDに関連付けられる。さらに、ファイルシステム116は、サブジェクトID(sID)をオブジェクトデータベース148のオブジェクトに関連付けることができる。
【0161】
いくつかの実施形態では、本方法は、ノード330において、ユーザアカウント内の位置にオブジェクトを表すことを含む。例えば、コンテンツ管理システム110のユーザアカウントのサブジェクトID(sID)は、オブジェクトID(oID)に直接関連付けられるので、オブジェクトは、ユーザアカウント内の位置に表すことができる。
【0162】
いくつかの実施形態では、本方法は、ノード350において、ファイルシステムによるオブジェクトのアクセスに関連する任意のパーミッションステートメントを評価することを含む。例えば、ファイルシステム116は、判定345において識別された任意のsID又はlink_sIDに関連するファイルシステムによるオブジェクトのアクセスに関連する任意のパーミッションステートメントを評価することができる。本技術の利点の1つは、ファイルシステム116がオブジェクトアクセスの最終的な制御を有することである。ファイルシステム116は、オブジェクトに関連するサブジェクトID(link_sIDであれ、他のsIDであれ)がアクセス制御リストにおいてオブジェクトにアクセスすることを許可されている場合にのみ、ファイルシステム116がオブジェクトを提供することができると判定するよう、他の任意のオブジェクトに対して通常行うようにオブジェクトアクセスを評価することができる。ファイルシステム116がどのようにしてサブジェクトID(sID又はlink_sID)がオブジェクトにアクセスできるかどうかを判定できるかについてのより詳細は、図7に関して提供される。
【0163】
ファイルシステム116がオブジェクトへのアクセスを制御する一方で、ファイルシステム116は、リンクサービス136が追加のアクセス制限を有する可能性があるかどうかを判定するため、又はリンクが有効であることを確認するために、リンクサービス136に問い合わせることもできる。例えば、ファイルシステム116は、リンクサービス136からのオブジェクトに対するアクセスの許可を要求することができ、リンクサービス136は、判定を行い(353)、任意のアクセス制限をファイルシステム116に送信することができる。いくつかの実施形態では、リンクアクセス制限チェック353のいくつかは、308で行われるステップと冗長である可能性はあるが、しかしながら、このチェックは、ファイルシステムアクセスオブジェクト335を発行してからの時間内にリンクが取り消されていないことを確認することができる。リンクアクセス制限チェック353はまた、ファイルシステム116によってネイティブにサポートされていない追加のリンクポリシーを実装するために使用され得る。
【0164】
いくつかの実施形態では、本方法は、ノード355において、サブジェクトIDがオブジェクトへのアクセスを許可されている場合に、オブジェクトに対するアクセスパーミッションと一致するオブジェクトをリンク呼び出し元に送信することを含む。例えば、ファイルシステム116は、サブジェクトIDがオブジェクトに対するアクセスを許可されているときに、オブジェクトに対するアクセスパーミッションと一致するオブジェクトをリンク呼び出し元に送信してもよい。
【0165】
リンク呼び出し元は、オブジェクトを受信する(357)ことができる。
【0166】
図7は、ディレクトリツリー内のオブジェクトに対する個々のパーミッションステートメントから構成されるアクセス制御リストを評価するための例示的な方法を示している。図7に示される例示的な方法は、特定の動作のシーケンスを示すが、シーケンスは、本開示の範囲から逸脱することなく変更され得る。例えば、示されている動作のいくつかは、並行して実行されてもよいし、方法の機能に実質的に影響を与えない別の順序で実行されてもよい。他の例では、本方法を実施する例示的なデバイス又はシステムの異なる構成要素は、実質的に同時に、又は特定の順序で機能を実行してもよい。
【0167】
上述のように、任意のオブジェクトに対する完全なアクセス制御リストは、コンテンツ管理システム110に存続しない可能性がある。その代わりに、特定のオブジェクトに対するACLリストは、特定のオブジェクトの上位のディレクトリツリー内のすべてのオブジェクトに対するACLテーブル202に記録されたすべてのパーミッションステートメントのベクトルである。図7に示される方法は、まず、特定のオブジェクトの上位の先祖のリストを決定し、次に、ACLを構成し、評価する。
【0168】
サブジェクトアカウントに代わって動作するクライアントがオブジェクトへのアクセスを要求するとき、又はオブジェクトデータベース148及びオブジェクトストレージ142への書き込みを要求するときに、オブジェクトのACLによって定義されたサブジェクトのパーミッションを判定することが必要となり得る。
【0169】
いくつかの実施形態では、方法は、ステップ405において、指定されたオブジェクトIDの先祖のリストを決定することを含む。例えば、ファイルシステム116は、オブジェクトIDの先祖のリストを決定してもよい。一例では、先祖のリストを決定することは、先祖データを含むテーブル内のクエリ・オブジェクトID(指定されたオブジェクトIDで始まる)を検索することによって次の先祖オブジェクトIDを取得すること、クエリ・オブジェクトIDに先祖として次の先祖オブジェクトIDを追加することによって先祖のリストを構築すること、及び次の先祖IDをクエリ・オブジェクトIDにすることを含む、いくつかのステップを再帰的に実行することを含み得る。リストを構築するこの再帰的プロセスは、ツリーのルートに到達したときに完了することができる。
【0170】
いくつかの実施形態では、オブジェクトのアクセス制御リストを決定する目的のために、ツリーは、サブジェクトアカウントによってアクセスできないルートを含むことができる。ディレクトリツリーを構築する再帰的プロセスは、複数のルートを持つディレクトリツリー、又は交差しない複数のツリーでさえ構築することができる。これは、コンテンツ管理システム110が、サブジェクトがアクセス権を持たないルートオブジェクトの下に格納されたオブジェクトを共有する能力の結果である。
【0171】
いくつかの実施形態では、本方法は、ステップ410において、先祖のツリー内の各オブジェクトIDに対するアクセスパーミッションを取得することを含む。例えば、ファイルシステム116は、ACLテーブル202から、先祖のツリー内の各オブジェクトIDに対するパーミッションステートメントを取得してもよい。上述したように、オブジェクトに対するアクセスパーミッションは、少なくとも、アクセスパーミッションが適用されるサブジェクト、サブジェクトに付与されたケイパビリティ、オブジェクトに対してサブジェクトに与えられたパーミッション(許可、拒否など)、及びアクセスパーミッションの継承プロパティを定義する。
【0172】
いくつかの実施形態では、本方法は、それぞれのパーミッションステートメントの継承プロパティに従って、パーミッションステートメントを順序付きリストに順序付けることを含む。特定のパーミッションステートメントは、「ファースト」の継承プロパティを持つことができ、非抑制可能であることができ、それにより、パーミッションステートメントの順序付きリスト内の任意の後続のパーミッションステートメントは、特定のパーミッションステートメントをオーバーライドすることができない。特定のパーミッションステートメントは、「ファースト」の継承プロパティを持つことができ、抑制可能であることができ、それにより、パーミッションステートメントの順序付きリスト内の任意の後続のパーミッションステートメントは、特定のパーミッションステートメントをオーバーライドすることができる。ファースト継承プロパティを持つ任意のパーミッションステートメントは、後続のパーミッションステートメントがこれの削除を要求しない限り、順序付きリストの先頭にソートされる。特定のパーミッションステートメントは、「ラスト」の継承プロパティを持つことができ、これらのパーミッションステートメントは、順序付きリストの最後にソートされる。特定のパーミッションステートメントは、「継承しない」(inherit none)の継承プロパティを持つことができ、パーミッションステートメントは、順序付きリストに表示されない。特定のパーミッションステートメントは、「継承拒否」(deny inherit)の継承プロパティを持つことができ、先祖のパーミッションステートメントが「ファースト」かつ「非抑制可能」でない限り、オブジェクトIDはその先祖からいかなるパーミッションも継承しない。
【0173】
ファイルシステム116は、ディレクトリツリー内の任意のオブジェクトに対する取得されたパーミッションが、「継承しない」の継承プロパティを含むかどうかを判定し(613)、もしそうであれば、ファイルシステム116は、そのオブジェクトに対するパーミッションステートメントを破棄することができる(614)。「継承しない」のプロパティは、それが関連付けられている特定のオブジェクトIDにのみ適用され、任意の先祖ポリシー又は子孫ポリシーがリスト内でマージソートされるかどうかには影響しない。
【0174】
ファイルシステム116は、ディレクトリツリー内の任意のオブジェクトに対する取得されたパーミッションが「継承拒否」の継承プロパティを含むかどうかを判定することができ(415)、そうである場合、ファイルシステム116は、継承ポリシーが非抑制可能なファースト継承ポリシーでない限り、すべての先祖(ディレクトリツリー内で「継承拒否」のプロパティを持つオブジェクトIDより上位のオブジェクト)からのパーミッションステートメントを破棄することができる(420)。破棄されたパーミッションステートメントは、リストにマージソートされない。
【0175】
残りのパーミッションステートメントを用いて、ファイルシステム116は、評価のために適切に順序付けるために、これらのパーミッションステートメントのマージソートを実行することができる。パーミッションステートメントの順序付けは、取得されたパーミッションステートメント内のオブジェクトIDに対するパーミッションステートメントが「ファースト」の継承プロパティを有することを判定すること(425)を含むことができる。ファイルシステム116は、「ファースト」の継承プロパティを有するパーミッションステートメントを、「ラスト」の継承プロパティを有するパーミッションステートメントよりも上に、リストの先頭から下にこれらのパーミッションをマージソートすることによって、パーミッションステートメントの順序付きリストにおいて配置することができ、各パーミッションは、ディレクトリツリーの上から下へ現れる順序でリストに含まれる。
【0176】
パーミッションステートメントの順序付けは、取得されたパーミッションステートメント内のオブジェクトIDに対するパーミッションステートメントが「ラスト」の継承プロパティを有することを判定することをさらに含み得る。ファイルシステム116は、「ラスト」の継承プロパティを有するパーミッションステートメントを有するオブジェクトIDの先祖に関連するパーミッションステートメントを、それらのそれぞれの先祖が先祖のツリーにおいて配置されるように、これらのパーミッションを逆相対順序でマージソートすることによって、パーミッションステートメントの順序付きリストにおいて配置することができる(430)。言い換えると、ディレクトリツリーの最下位にあるオブジェクトのためのアクセスパーミッションは、ディレクトリツリーの上位にあるオブジェクトのパーミッションステートメントよりも上位のパーミッションステートメントの順序付きリストに配置される。ただし、「ラスト」継承アクセスパーミッションはすべて、「ファースト」継承パーミッションステートメントを持つアクセスパーミッションの下の順序付きリストに配置される。オブジェクトに対するすべてのアクセスパーミッションの順序付きリストは、オブジェクトに対するアクセス制御リスト(ACL)とみなすことができる。
【0177】
いくつかの実施形態では、本方法は、ステップ435において、あるパーミッションステートメントがオブジェクトへのアクセスを許可又は拒否するまで、パーミッションステートメントの順序付きリストを順に繰り返すことを含む。例えば、ファイルシステム116は、アクセスが許可されるべきか拒否されるべきかを決定するために、パーミッションステートメントの順序付きリストを順に繰り返してもよい。
【0178】
いくつかの実施形態では、パーミッションステートメントがアクセスを許可又は拒否したときに、リストを介した繰り返しを終了することができる。ファースト継承パーミッションが抑制され得る場合、ラスト継承パーミッションステートメントの1つがアクセスを提供又は拒否するまで、ツリーを通して少なくとも繰り返し実行する必要がある。従って、アクセスが許可されるべきか拒否されるべきかを判定することは、非抑制可能なファースト継承パーミッションによってアクセスが許可されるか拒否されるかを判定すること(440)を含む。非抑制可能なパーミッションステートメントがアクセス判定を解決しない場合、ファイルシステム116は、ラスト継承パーミッションステートメントがアクセスを許可又は拒否するまで、パーミッションステートメントの順序付きリストの残りの部分を評価し(445)、ACL評価の結果に基づいてアクセスを許可又は拒否することができる(450)。
【0179】
いくつかの実施形態では、抑制可能なファースト継承アクセスポリシーはまた、それらのポリシーが、ツリーの他の場所にあるオブジェクトに関連付けられたラスト継承ポリシーによって抑制されているかどうかに注目することによっても、処理され得る。そのような場合、抑制されたファースト継承アクセスポリシーは、マージソートから除外することができ(425)、パーミッションステートメントのリストは、ステップ440、445、及び450から構成されるサブメソッドに関係なく、パーミッションステートメントのリストの単純な繰り返し(435)を使用して評価することができる。
【0180】
いくつかの実施形態では、図7の出力は、評価された任意のオブジェクトに対するケイパビリティのリストであり得る。
【0181】
図7に示されたアクセス判定方法は、非常に柔軟であるという利点を有することができる。リンクによってオブジェクトにアクセスしようとする誰にでもアクセス権を提供するパーミッションステートメントを作成することができるが、コンテンツ管理システムに知られているサブジェクトIDに対して、より特定のアクセスパーミッションを提供することができる。例えば、コンテンツ管理のユーザアカウントには、匿名ユーザよりも大きなアクセス権を与えることができる。
【0182】
共有リンクの場合、ツリーのルートは、一般に、リンクを使用して共有する目的でコンテンツ管理システム110に格納されるオブジェクトの共有オブジェクトのレベルにあるか、又はオブジェクトが既存のユーザアカウント内から共有される場合は、コンテンツ管理システム110の別の場所からマウントされる。最初の例では、オブジェクトがlink_sIDアカウントのルートに格納されている場合、図7に示される方法の結果は、一般に、リンクが提供するアクセスによって決定される。一方、リンクが、コンテンツ管理システム110の他の場所に格納され、link_sIDアカウントのルートにマウントされたオブジェクトへのアクセスを提供する場合、アクセスは、オブジェクト自体に対するアクセスに関する制限と、リンクによって提供されるアクセスによって決定される。
【0183】
図8は、リンクサービス136と、リンクサービス136によって実行されるいくつかの例示的なサービスとを示す。上記で取り上げたように、リンクサービス136は、リンクサービス136がリンクの発行、管理、及び処理に関連するすべてのサービスを実行することができる、ソフトウェア・アズ・ア・サービス・プラットフォームとして動作することができる。図8が、ソフトウェア・アズ・ア・サービス・プラットフォームとして動作するリンクサービス136によって提供され得るすべての可能なサービスを示すものではないことが、当業者には理解されよう。リンクサービス136は、コンテンツ管理システム110の一部として提供されるサービスであってもよいし、リンクサービス136は別個のサービスであってもよい。
【0184】
上述のように、リンクサービス136を利用したいリンク呼び出し元、ユーザ、及びサービスは、リンクサービス136によって提供される1つ以上のAPI138を呼び出すことによって、リンクサービス136に連絡することができる。例えば、ユーザ又はサービスは、リンクを設定するためにユーザに提示するためのリンク設定ユーザインタフェース520をAPI138に開始させてもよいリンク生成APIを呼び出すことができる。別の例では、リンク呼び出し元はリンクアクセスAPIを呼び出すことができ、API138はリンクによって参照されるオブジェクトを取得するためにリンクアクセスサービス515とインタフェースすることができる。別の例では、ファイルシステム116はリンクアクセスレベルAPIを呼び出し、API138は、リンクによって提供されるアクセスレベルを決定するため、リンクアクセスサービス515とインタフェースすることができる。当業者によって理解されるように、リンクサービス136によって提供され得る1つ以上の機能に対応する、リンクサービス136によって提供される多くのAPIが存在し得る。
【0185】
図9は、いくつかの例示的なAPIとそれらの機能を示す。本明細書で扱われるAPI及びそれらの例示的な機能は、リンクサービス136によって実行され得る機能の限定とみなされるべきではない。
【0186】
リンクサービス136の1つの機能は、オブジェクトへのリンクの作成であり得る。このようなリンクサービス136は、オブジェクトに対するリンクを作成及び設定するために、ウェブブラウザ又はクライアントデバイス150上のアプリケーションを介してユーザに提示することができるリンク設定ユーザインタフェース520を含む。以下でさらに説明されるように、図11Aは、リンク設定ユーザインタフェース520によって提供されるグラフィカルユーザインタフェースの例を示す。
【0187】
リンクサービス136はまた、リンク生成サービス505を含むことができる。リンク生成サービス505は、リンク生成グラフィカルユーザインタフェースをユーザが使用することによって構成されるように、又はサードパーティサービス170もしくは1つ以上のAPI138を介してリンクサービス136とインタフェースするアプリケーションなどのソフトウェアサービスによって指示されるように、リンクを作成することができる。
【0188】
例えば、図10は、リンクを作成するための例示的な方法を示す。リンク生成サービス505は、オブジェクトへのリンクを設定するための、オブジェクトを識別することができる、要求550を受信することができる。いくつかの実施形態では、オブジェクトへのリンクを設定する要求550は、図11Aに示されるようなユーザインタフェースから来ることができ、又はオブジェクトへのリンクを設定する要求550は、API138を介して対話するサービスから来ることができる。リンク生成サービス505は、リンクサービス136へのリンクを一意に識別する、リンクのためのURLを作成することができる(555)。リンクサービス136はまた、ファイルシステム116内のリンクを設定するために、ファイルシステム116とインタフェースすることもできる(560)。リンクサービス136は、上述したように、リンクをファイルシステム内のアクタとして確立する(560)ためにファイルシステム116と通信することができるファイルシステムインタフェース525を使用して、これらの機能を実行することができる。ファイルシステムインタフェース525はまた、オブジェクトのためのアクセス制御リストに含めるために、リンクに関連する任意のパーミッションステートメントを設定することができる(560)。
【0189】
いくつかの環境では、オブジェクトへのリンクを設定する要求550は、オブジェクトがオブジェクトデータベース142に格納される場合、そのoIDによってオブジェクトを識別することができる。しかしながら、オブジェクトへのリンクを設定する要求550が、オブジェクトデータベース142に格納されていないオブジェクトを参照するような場合は、その要求は、オブジェクトデータベース142に格納するためのオブジェクト自体を含むことができる。いくつかの実施形態では、リンクによって参照されるオブジェクトがオブジェクトデータベース142に格納される必要はないかもしれない。リンクサービス136は、サードパーティサービス170に格納されたオブジェクトを参照するリンクサービスを提供するために、サードパーティサービスとインタフェースすることができる。
【0190】
ファイルシステム116とのインタフェースに加えて、リンク生成サービス505は、リンクされたオブジェクトのlink_sID及びoID、並びに任意の追加のアクセス制限を含む、リンクに関連付けられたメタデータをリンクデータベース510に格納することができる(570)。
【0191】
リンクサービス136はまた、リンク呼び出し元によるオブジェクトへのアクセスに関連するサービスも提供する。例えば、リンクサービス136は、リンク生成サービス505によって発行されたリンクをアクティブ化したリンク呼び出し元から、オブジェクトにアクセスする要求を受け取ることができる。リンクサービス136は、リンクが有効であることを検証し、リンクデータベース510内のリンクメタデータを検索するために、リンクアクセスサービス515を利用することができる。リンクメタデータは、リンクのタイプ(リンクサービスによって発行されたリンク、パートナーサービスによって発行されたリンク、リンクサービスによってサポートされたレガシーリンクなど)、リンクパーミッション、リンク設定、リンクに関連付けられたポリシー、リンクを確立したエンティティなどに関する情報を含むことができる。さらに、いくつかの実施形態では、ファイルシステム116は、リンクアクセスレベルに関する追加情報を要求することができ、リンクアクセスサービス515は、任意の必要な情報を返すことができる。
【0192】
リンクサービス136はまた、リンクを管理するために外部サービスとインタフェースすることもできる。いくつかの環境では、リンクサービス136は、リンク生成サービス505を使用してサードパーティサービス170にリンクを提供することができるが、いくつかの実施形態では、サードパーティサービス170又はレガシーサービス135がリンクを作成し、リンクサービス135にリンクの維持及びサービスの側面を管理することを望む場合がある。このような実施形態では、外部リンクロジックインタフェース530を使用して、サードパーティサービス170又はレガシーリンクサービス135とインタフェースし、リンクが有効であるか、又は何らかの制限の対象であるかを判定することができる。
【0193】
リンクを作成すること、及びリンクの訪問を処理することに加えて、リンクサービス136は、他のリンクサービスをさらに提供することができる。図8に示されているように、他のリンクサービス540は、任意の追加のリンクサービスを示すための汎用プレースホルダを示している。いくつかの例示的なリンクサービスには、リンク管理、リンクが訪問され得るレートの制限、不正防止、リンクの禁止、検証されていないユーザのリンク作成の防止、オブジェクトに関連付けられ得る共有ポリシーへの適合性の確保、標準リンク設定、有効期限、パスワード、閲覧者管理、分析、メトリクス及びロギング、リンク送信者及び訪問者の追跡、監査ロギング、管理機能、データ損失防止、ファイルシステムパーミッションとの統合などが含まれる。
【0194】
図11Aは、リンクサービス136を使用してリンクを作成するための例示的なユーザインタフェースを示す。リンク設定UI520は、リンクが作成されるべきオブジェクトへのアクセス権を有するユーザによる要求の結果として、図11Aに示されるユーザインタフェースを提示することができる。例えば、リンク設定UI520は、図9に示されるように、ユーザがGetFileLinkActions APIを呼び出した結果として、図11Aに示されるユーザインタフェースを提示することができる。
【0195】
図11Aに示されるユーザインタフェースは、CreateApplicationLink APIを呼び出すことによってリンクを生成し、フィールド605にリンクの公開バージョンを提示することができる。リンクはさらに、1つ以上のオプション610を用いて設定することができる。図11Aに示されているように、いくつかのオプション610は、リンクの有効期限を提供すること、及びアクセスのタイプを指定することを含むことができる。図11Aには図示されていないが、他のオプション及びこれらのオプションのより複雑なバージョンがサポートされ得ることが理解されるべきである。例えば、リンク呼び出し元が匿名であるか、指定されたsIDのリスト内にあるか、リンク呼び出し元がパスワードを提供するかなどに応じて、様々なレベルのリンクアクセスが提供される可能性がある。
【0196】
図11Bは、サードパーティサービス170によって提供されるユーザインタフェースを示しており、サードパーティサービス170は、リンクサービス136にリダイレクトすることができるリンク615を作成することができる。サードパーティサービス170は、サードパーティサービス170に格納されたコンテンツにリンクしてもよいし、コンテンツはコンテンツ管理システム110によってオブジェクトストレージ142に格納されてもよい。図11Bはまた、リンクを共有する特定の共同作業者を指定することや、リンクアクセスのレベルを指定することなどのリンクオプション620を提供する。図11Bには図示されていないが、他のオプションやこれらのオプションのより複雑なバージョンがサポートされ得ることが理解されるべきである。
【0197】
図12A及び図12Bは、リンクプラットフォーム・アズ・ア・サービスとして動作するリンクサービス136及びサードパーティサービス170によって、リンクを共同管理するための例示的な方法の一部を示す。
【0198】
図13は、リンクサービス136によってリンクを共同管理するための例示的なシーケンス図を示す。リンクの共同管理は、リンクサービス136とサードパーティサービス170の両方がリンクを設定することができること、とりわけ他の態様の中でも、リンクがいつ有効であるか又はアクセス可能であるかを判定するためにリンクロジックを供給することを含むことができる。
【0199】
図12A及び図12Bは、パートナーサービスの例としてサードパーティサービス170に関して議論されるが、リンクサービス136とリンクを共同管理する任意のサービスも可能であることが理解されよう。
【0200】
図12A図12B、及び図13のシーケンスに図示された例示的な方法は、動作の特定のシーケンスを示すが、シーケンスは、本開示の範囲から逸脱することなく変更され得る。例えば、示されている動作のいくつかは、並行して実行されてもよいし、方法の機能に実質的に影響を与えない異なる順序で実行されてもよい。他の例では、本方法を実装する例示的なデバイス又はシステムの異なる構成要素は、実質的に同時に、又は特定の順序で機能を実行してもよい。
【0201】
パートナーサービス(サードパーティサービス170、又はコンテンツ管理システム110の別のサービス)は、リンクサービス136による共同管理のためにリンクを設定することができる。例えば、パートナーサービスは、リンクサービス136においてリンクを確立するように要求することができ(701)、リンクサービス136はリンクを設定することができる(702)。リンクを設定することの一部は、ファイルシステム116とインタフェースして、リンクのためのlink_sIDを作成し、リンクによって参照されるオブジェクトにアクセスするパーミッションをlink_sIDに与えることである。パートナーサービスは、すでにオブジェクトをファイルシステム116に格納していてもよいし、リンクサービス136においてリンクを確立すること(701)の一部として、ファイルシステム116による格納のためにオブジェクトを送信してもよい。
【0202】
いくつかの実施形態では、リンク呼び出し元は、パートナーサービスによって発行されたリンクをアクティブ化することができ(704)、これによってパートナーサービスは、オブジェクトにアクセスする要求を受信することができる(705)。パートナーサービスは、独自のリンクロジックを実行し(706)、リンクを認証し、リンク呼び出し元を承認することができる。いくつかの実施形態では、パートナーサービスはこのステップを実行しなくてもよい。
【0203】
パートナーサービスは、それが発行したリンクと、パートナーサービス及びリンクサービス136によって共同管理される共同管理リンクとのマッピングを維持することができる。オブジェクトにアクセスする要求を受信し(705)、任意選択で任意のリンクロジックを実行(706)した後、パートナーサービスは、リンク呼び出し元によってアクティブ化されたパートナーサービスによって発行されたリンクに対応する共同管理リンクを使用して、リンクサービス136に連絡することができる。
【0204】
いくつかの実施形態では、本方法は、ノード707において、パートナーサービスリンクによって参照されるオブジェクトへのアクセスを提供する要求を受信することを含む。例えば、リンクサービス136は、パートナーサービスリンクによって参照されるオブジェクトへのアクセスを提供する要求を、パートナーサービスから受信することができる。いくつかの実施形態では、パートナーサービスからのオブジェクトへのアクセスを提供する要求は、パートナーサービスが、パートナーサービスリンクの呼び出し元がオブジェクトにアクセスすることを許可されているという、それ自身での判定を行った後に発生する。例えば、パートナーサービスリンクは、サードパーティサービス170を指す場合があり、したがって、ユーザがリンクをアクティブ化してリンク呼び出し元になると、サードパーティサービス170に誘導される。サードパーティサービス170は、パートナーサービスリンクが有効であるかどうかを判定するための自身の基準を利用することができ(706)、リンク呼び出し元が認可された場合、パートナーサービスは、パートナーサービスによって格納された共同管理リンクを使用してリンクサービス136に連絡することができる。
【0205】
いくつかの実施形態では、パートナーサービスは、リンク呼び出し元に共同管理リンクを送信し、リンク呼び出し元にリンクサービス136へのリンクに従うように指示し、リンクサービス136はリンク呼び出し元と直接対話することができる。
【0206】
いくつかの実施形態では、パートナーサービスはまた、リンクサービス136を使用してリンクを確立し、そのリンクをリンク呼び出し元に送信することも可能である。このような実施形態では、リンクを呼び出すとき、リンク呼び出し元はパートナーサービスとまったく対話しない。
【0207】
いくつかの実施形態では、パートナーリンクは、共同管理リンクであってもよく、これにより、リンク呼び出し元は、最初にパートナーサービスに連絡することなく、リンクサービス136に直接誘導され、リンクサービス136はリンクを共同管理リンクとして認識することができ、任意選択で、外部リンクロジックインタフェース530を使用してサードパーティサービス170とインタフェースし、リンクが有効かどうか、及びリンク呼び出し元が許可されているかどうかを判定することを、サードパーティサービスに対して可能とさせるようにすることができる。このように、パートナーサービス及びリンクサービスは、ともに自身のアクセス判定を行うことができる。このような実施形態は、パートナーサービスがリンク処理プロセスへの関与を少なくしたい場合に有用であり得、その結果、パートナーサービスがサービスする必要のないリンクを発行することになり得る。同時に、パートナーサービスは、リンク発行者として、リンクサービス136とインタフェースして、所望のようにリンクを設定(又は再設定)することができる。
【0208】
従って、パートナーサービスがリンクの管理及びリンク呼び出し元のサービスにあまり関与しないための仕組みが存在するが、図13は、パートナーサービスがリンクを発行し、オブジェクトを提供しているかのように見えることを望む実施形態を想定している。
【0209】
パートナーサービスによるリンクの共同管理は、あらゆるリンク管理機能又はリンクサービシング機能の共有を含むことができ、リンクが有効であるかどうか、及びリンク呼び出し元が許可されているかどうかを判定することに限定されないことが理解されよう。
【0210】
いくつかの実施形態では、認可されたエンティティの識別情報(715)は、リンクに対応するs_IDである。パートナーサービスリンクがリンク呼び出し元をパートナーサービスに直接誘導する場合、パートナーサービスは、共同管理リンクを使用してリンクサービス136に連絡するときに、リンクサービス136に追加情報を含めることができる。例えば、パートナーサービスリンクによって参照されるオブジェクトへのアクセスを提供する要求は、オブジェクトを要求するエンドユーザを識別することができ、任意のユーザ識別情報をリンクサービスへの要求(707)に含めることができる。
【0211】
パートナーサービスがリンク呼び出し元のsIDを知らない場合でも、パートナーサービスは、既知であれば、電子メールアドレス又は他のユーザ識別子を転送することができる。リンクサービス136は、任意の電子メールアドレス又はユーザ識別子を、サブジェクトデータベース250内のsIDにマッピングする情報とマッチングすることを試みることができる。
【0212】
いくつかの実施形態では、本方法は、ノード710において、不正防止及びリンクアクセスロギング機能を実行することを含む。例えば、リンクサービス136は、不正防止及びリンクアクセスロギング機能、並びに/又は、リンクプラットフォーム・アズ・ア・サービスとして動作するリンクサービス136から所望される任意の他のサービスを実行することができる。
【0213】
オブジェクトにアクセスする要求を受信した後、リンクサービス136は、リンクを検証することができ(715)、及び/又は他のリンクサービス308を実行することができる。いくつかの実施形態では、リンクサービス136は、リンクが現在有効なリンクであるかどうか、リンクが適切なオブジェクトを参照しているかどうかを判定することによって、及び様々なリンクメタデータを調べることによって、リンクを検証することができる。リンクメタデータは、link_sID、リンクプロパティ、リンクケイパビリティ(オブジェクトの取得、リンクの変更など)を決定することを含むことができる。
【0214】
いくつかの実施形態では、リンクサービス136及びパートナーサービスが、リンクが有効であると判定し、リンクに関して他のサービスを実行した後、本方法は、ノード715において、コンテンツ管理システム110のファイルシステム116を指すファイルシステムアクセスオブジェクトを作成することを含む。いくつかの実施形態では、ファイルシステムアクセスオブジェクトは、ファイルシステムアクセスオブジェクトが有効であり続ける時間を制限するための有効期限を有するトークンを含む。ファイルシステムアクセスオブジェクトは、ファイルシステムアクセスオブジェクト内の認証トークンを有するエンティティが、オブジェクトを取得するために、ファイルシステム116とインタフェースすることを可能にする。有効期限は、リンクサービス136及びパートナーサービスが、リンクが呼び出されたときに望む機能を実行できるように、オブジェクトに対する将来の呼び出しがオリジナルリンクを使用して行われることを保証する。
【0215】
いくつかの実施形態では、本方法は、リンクサービス136によってパートナーサービスに、ファイルシステムを指すファイルシステムアクセスオブジェクトを送信することを含む。ファイルシステムアクセスオブジェクトは、ノード720において、認可トークン、認可されたエンティティの識別情報、及びオブジェクトIDを含む。ファイルシステムアクセスオブジェクトは、ファイルシステム116にアクセスするのに必要な情報を含むことができ、リンクサービス136に知られている任意のサブジェクトIDを識別することができる。例えば、ファイルシステムアクセスオブジェクトは、リンクのlink_sIDを含むことができ、リンク呼び出し元がコンテンツ管理システム110に知られているユーザアカウントに関連付けられることができる場合、ファイルシステムアクセスオブジェクトは、ユーザアカウントのsIDを含むことができる。ファイルシステムアクセスオブジェクトは、ファイルシステム116に対するオブジェクトを識別するオブジェクトIDも含むことができる。
【0216】
ファイルシステムアクセスオブジェクトはまた、オブジェクトを取得するため、又はリンクに対するパーミッションを変更するために、ファイルシステムにおける1つ以上のAPIにアクセスするように、又は、リンクを削除するなどの他のリンクプロパティを修正するためにリンクサービス136と対話するように、リンク呼び出し元に指示するメタデータを含むこともできる。
【0217】
いくつかの実施形態では、パートナーサービスは、ファイルシステムアクセスオブジェクトを受信することができ、ファイルシステム116にオブジェクトを要求することができる(723)。
【0218】
本方法は、ノード725において、ファイルシステムによって、ファイルシステムアクセスオブジェクトで識別されたオブジェクトにアクセスする要求を受信することをさらに含む。例えば、ファイルシステム116は、ファイルシステムアクセスオブジェクトにおいて識別されたオブジェクトにアクセスする要求を受信することができる。
【0219】
いくつかの実施形態において、本方法は、ノード740において、ファイルシステムによって、ファイルシステムアクセスオブジェクトに関連付けられたアクセスレベル要求をリンクサービスに送信することを含む。例えば、ファイルシステム116は、ファイルシステムアクセスオブジェクトに関連するアクセスレベル要求をリンクサービス116に送信することができる。ファイルシステム116は、オブジェクトに関してサブジェクトIDに付与されたパーミッションを決定することができるが、いくつかの実施形態では、リンクサービス136は、オブジェクトへのアクセスに影響し得るいくつかの追加の構成も含むことができる。従って、ファイルシステム116は、リンクサービス136と通信して、任意の追加のアクセスレベル情報を決定することができる。
【0220】
リンクサービス136は、ファイルシステムアクセスオブジェクトに関連付けられたアクセスレベルを判定し(745)、リダイレクトリンクに関連付けられたアクセスレベルをファイルシステム116に送信する(750)ことができる。いくつかの実施形態では、リンクアクセス制限チェック353のいくつかは、308で行われるステップと冗長である可能性があるが、このチェックは、ファイルシステムアクセスオブジェクト335を発行してからの時間内にリンクが取り消されていないことを確認することができる。リンクアクセス制限チェック353はまた、ファイルシステム116によってネイティブにサポートされていない、追加のリンクポリシーを実装するために使用され得る。
【0221】
いくつかの実施形態では、本方法は、ファイルシステムによって、ファイルシステムアクセスオブジェクトが、ノード755でのオブジェクトのアクセスパーミッションにおいてアクセスが許可されたsIDを識別するかどうかを判定することを含む。例えば、ファイルシステム116は、ファイルシステムアクセスオブジェクトが、オブジェクトに対するアクセスパーミッションにおいてアクセスが許可されているsIDを識別するかどうかを判定することができる。リダイレクトリンクの認可トークンは、少なくとも、リンクがファイルシステム内のアクタであることを許可するlink_sIDを識別する必要がある。いくつかの実施形態では、認可トークンはまた、コンテンツ管理システムのユーザアカウントのsIDも識別し得る。
【0222】
いくつかの実施形態では、本方法は、ノード760において、エンドユーザが、コンテンツ管理システムにおいて、ユーザアカウントを持っていると判定することを含む。いくつかの実施形態では、ファイルシステム116はまた、リンク呼び出し元が、コンテンツ管理システム110において、ユーザアカウントを有することも判定してもよい。例えば、リンクサービス136は、リンク呼び出し元がコンテンツ管理システム110とのアクティブなセッションを有し、認可トークンにユーザアカウントのsIDを含む(765)ことを知っている場合がある。その代わりに、ファイルシステム116は、アクティブなセッションを検出するか、又は他の方法で、リンク呼び出し元がユーザアカウントのsIDに関連付けられていることを識別してもよい。例えば、リンクサービス136又はファイルシステム116は、パートナーサービスによって提供される、リンク呼び出し元に関連付けられた電子メールアドレスに関連付けられたsIDを識別することができる。
【0223】
リンク呼び出し元がコンテンツ管理システム110にユーザアカウントを有すると判定される(760)と、本方法は、ユーザアカウントをリンクのメンバとして関連づけるために、ファイルシステム116内のIDテーブルを更新することを含み、これにより、ノード770において、ユーザアカウントはリンクに関連付けられる。いくつかの実施形態では、ノード775において、ファイルシステム116は、リンクによって参照されるオブジェクトをユーザアカウント内の位置に表す。例えば、オブジェクトは、ユーザアカウントのsIDとファイルシステム116内のオブジェクトのoIDを関連付けることによって、ユーザアカウントに追加されることができ、それによって、オブジェクトは、将来のアクセスにリンクを必要とすることなく、ユーザアカウントに直接アクセス可能になる。
【0224】
いくつかの実施形態では、sIDがオブジェクトへのアクセスを許可されている場合、ノード780において、オブジェクトに対するアクセスパーミッションと一致するパートナーサービスにオブジェクトを送信する。例えば、認可トークンがオブジェクトへのアクセスを提供する有効なlink_sIDを識別する限り、リンク呼び出し元はオブジェクトを受信することができる。これにより、匿名ユーザは、リンクによって参照されるオブジェクトにアクセスすることができる。sIDがオブジェクトへのアクセスを許可されている場合、ファイルシステム116は、オブジェクトに対するアクセス許可と一致するオブジェクトをリンク呼び出し元に送信する。
【0225】
いくつかの実施形態では、本方法は、リンクサービス136に連絡したエンティティにオブジェクトを送信する(785)ことを含む。例えば、パートナーサービスがリンクサービス136にリンクを提供した場合、リンク呼び出し元は、ファイルシステム116からオブジェクトを直接受信する(787)。図13は、ファイルシステム116がオブジェクトをパートナーサービスに送信し(785)、パートナーサービスがオブジェクトをリンク呼び出し元に転送できる実施形態を示す。このような実施形態では、これによって、パートナーサービスは、オブジェクトを任意のUI又はマーキングで包みこむことができ、あたかもオブジェクトがパートナーサービスによって提供されたかのように見せることができる。
【0226】
パートナーサービス及びリンクサービスによるリンクの共同管理は、リンク呼び出し元がオブジェクトにアクセスする権利を与えられるべきかどうかを判定するために、リンクロジックを適用する両方のエンティティ以上のものを含むことができる。図13は、リンク呼び出し元がオブジェクトを要求している実施形態を示すが、パートナーサービスは、それ自体の開始時に、共同管理リンクを通じてリンクサービス136と対話することができる。
【0227】
リンクの共同管理によって、両方のエンティティ(パートナーサービス及びリンクサービス136)は、リンクの設定を変更すること、リンクを削除すること、又はリンクをさらに共有することなどを含む、リンク上の進行中の管理に参加することができる。いくつかの実施形態において、本方法は、ノード790において、リンクサービスのAPIによって、パートナーサービスから、アクセスレベル変更要求を受信することを含む。例えば、リンクサービスのAPI138は、サードパーティサービス170などのパートナーサービスからアクセスレベル変更要求を受信することができる。いくつかの実施形態では、アクセスレベル変更要求は、オブジェクトに対する少なくとも1つのアクセスパラメータの変更を含む。少なくとも1つのアクセスパラメータの変更は、リンクを有するエンドユーザに適用することができる。
【0228】
他の動作も可能である。いくつかの実施形態では、パートナーサービスは、共同管理リンクを使用してリンクサービス136に連絡することができる。リンクサービス136は、リンクサービス136によって、又はファイルシステム116と対話するパートナーサービスによって、実行されることが可能なリンク機能のコレクションを含むリンクメタデータを返すことができる。次に、パートナーサービスは、リンクサービス136又はファイルシステム116の適切なAPIに連絡して、管理機能を実行する、又は、リンクの対象であるオブジェクトを要求又は修正することができる。
【0229】
図14は、レガシーリンクをサポートするための例示的な方法を示す。いくつかの実施形態では、リンクは、管理のためにリンクサービス136に与えられる前に既に存在し得る。そのような実施形態では、リンクは、リンクサービス136以外の場所に既に向けられ得る。さらに、リンクは、リンクサービス136によって提供される挙動又はロジックとは異なる挙動又はロジックに関連付けられる場合があり、既存のリンクに関連付けられたユーザ体験を変更することは望ましくない場合がある。同時に、コンテンツ管理システム110に、リンクによって指し示されるオブジェクトを記憶及び管理させること、又はリンクサービス136に追加のリンク機能を提供させることが望ましい場合がある。図14に示される方法は、これらのような実施形態を対象としたものである。
【0230】
図15A及び図15Bは、レガシーリンクをサポートするための代替の呼び出しフローを示すシーケンス図である。特に、図15Aは、リンクのアクティブ化が、リンクサービスの機能を呼び出すAPI138に指示する例示的なシーケンスを示す。この実施形態は、レガシーサービスの代わりにリンクサービス136を指すように、APIが更新される場合に有用である。しかしながら、図15Bは、レガシーリンクがレガシーリンクサービスを指し続け、かつ、レガシーリンクサービスがリンクサービス136を参照するように更新される場合のシーケンスを示す。
【0231】
リンク呼び出し元は、リンクをアクティブ化することができる(801)。いくつかの実施形態では、図15Aに示されるように、アクティブ化されたリンクは、リンク呼び出し元を、オブジェクトに対する要求を受信することができる(802)レガシーリンクサービスに向けることができる。いくつかの実施形態では、図15Bに示されるように、アクティブ化されたリンクは、リンク呼び出し元を、リンクによって参照されるオブジェクトにアクセスする要求を受信することができる(803)リンクサービス135に向けることができる。リンクサービス136は、リンクデータベース510内でリンクを調べることによって、リンク呼び出し元がリンクサービス136にレガシーリンクとして照会したリンク804を判定し、要求をレガシーリンクサービスに転送することができる。
【0232】
いくつかの実施形態では、本方法は、ノード805において、レガシーリンク評価ロジックに従ってレガシーリンクを評価することを含む。例えば、リンクサービス136は、レガシーリンク評価ロジックに従ってレガシーリンクを評価することができる。
【0233】
いくつかの実施形態では、ノード805において、レガシーリンク評価ロジックに従ってレガシーリンクを評価することは、図15Bに示されるように、レガシーサービスからのリンクロジックと対話するために、リンクサービス136が外部リンクロジックインタフェース530を使用してレガシーリンクロジックと対話することを含み得る。
【0234】
いくつかの実施形態では、リンクサービス136は、レガシーリンクロジックを評価する命令で構成されることができ、レガシーサービスに連絡する必要はない。
【0235】
いくつかの実施形態では、レガシーリンクサービスは、リンク呼び出し元がオブジェクトにアクセスできないと判定する可能性がある。例えば、レガシーリンクサービスの中には、オブジェクトへのアクセスを提供したユーザがオブジェクトへのアクセスを現在維持している場合にのみアクセスを許可するものがある。オブジェクトへのアクセスを提供したユーザがオブジェクトへのアクセス権をもはや持っていない場合、一部のレガシーリンクサービスは、パブリックリンクでアクセスする場合でも、他のユーザがオブジェクトにアクセスすることを許可しない。
【0236】
リンク呼び出し元がオブジェクトにアクセスできるとレガシーリンクサービスが判定した後、レガシーリンクサービスは、レガシーリンクによって参照されるオブジェクトに関連付けられたプロキシリンクを識別し、プロキシリンクを使用してリンクサービス136を呼び出すことを試みることができる。
【0237】
しかしながら、いくつかの実施形態では、プロキシリンクがまだ存在しないかもしれない。いくつかの実施形態では、リンクサービス136がレガシーリンクサービスと連携するように構成されている場合、多くのリンクがレガシーリンクサービスによって、それ以前に発行されてしまっている可能性がある。それらのリンクの多くは、二度とアクティブ化されない可能性が高い。そのため、すべてのレガシーリンクに対してプロキシリンクを先回りして作成するのは非効率的であろう。代わりに、本技術は、必要なときに要求に応じてプロキシリンクを作成することができる。このような実施形態では、レガシーリンクサービスは、オブジェクトに関連付けられたプロキシリンクの識別を試みることができ、失敗した場合、レガシーリンクサービスは、既知のプロキシリンクを使用してリンクサービス136にアクセスする代わりに、リンクサービス136(図示せず)にプロキシリンクを要求することができる。
【0238】
いくつかの実施形態では、本方法は、ノード810において、レガシーリンクによって参照されるオブジェクトへのアクセスを提供する要求を受信することを含む。例えば、リンクサービス136は、レガシーリンクによって参照されるオブジェクトへのアクセスを提供する要求を受信することができる。この要求は、レガシーリンクサービスが、レガシーリンクによって参照されるオブジェクトのプロキシリンクをたどった結果か、又はプロキシリンクの発行を要求した結果であり得る。
【0239】
要求810がリンクサービス136によって受信されたレガシーリンクの最初の要求であり、レガシーリンクサービスがプロキシリンクを要求している場合、オブジェクトストレージ142にlink_sIDを設定し、プロキシリンクを設定することが必要であるか、又はリンクサービス136がオブジェクトに対して確立されたプロキシリンクをすでに持っている可能性がある。新しいプロキシリンクを作成する必要がある場合、リンクサービス136は、ファイルシステム116においてlink_sIDに関連付けられるプロキシリンクを作成するために、ファイルシステムインタフェース525を使用してファイルシステム116と通信することができる。いくつかの実施形態では、プロキシリンクは、ファイルシステム内の自身のサブジェクトID(link_sID)に関連付けられる。例えば、この方法は、リンクサービスによって、ノード815においてファイルシステムオブジェクトを指すプロキシリンクを生成することを含み、ファイルシステム116は、プロキシリンクを設定することができ、プロキシリンクのためのlink_sIDを記録することができる(817)。例えば、リンクサービス136は、ファイルシステム116を指すプロキシリンクを生成することができる。
【0240】
いくつかの実施形態では、要求810がリンクサービス136によって受信されたレガシーリンクに対する最初の要求であり、レガシーリンクサービスがプロキシリンクを要求している場合、リンクサービス136は、オブジェクトに対して作成された、再利用できるプロキシリンクをすでに持っているかもしれない。例えば、リンクサービス136は、別のレガシーリンクのためにオブジェクトへのプロキシリンクを作成している可能性があり、このプロキシリンクは、再利用され得る。プロキシリンクは、図12A図12B、及び図13の共同管理リンク、又は図5及び図6のリンクとは少し異なる。なぜなら、これらのリンクは、ファイルシステム116において、及び、おそらくはリンクサービス136においても、ポリシー(パーミッションステートメント)に対応付けられるのに対して、レガシーリンクは、それらのポリシーをレガシーリンクサービスによって制御されるからである。このように、1以上のレガシーリンクの各プロキシリンクは、通常、ファイルシステム116内のリンクに関連付けられた同じポリシー(パーミッションステートメント)を有する。プロキシリンクのlink_SIDは、ファイルシステム116に従ってオブジェクトの読み取りと書き込みが許可される。レガシーリンクサービスからの任意の追加の制限は、以下で説明するブロック837において、リンクサービス136によって課されることが可能である。
【0241】
プロキシリンクがすでに構成されている場合、リンクサービス136は、プロキシリンクを使用し、link_sID及び任意の既知のユーザsIDを提供することによって、ファイルシステム116にオブジェクトを要求することができる。ファイルシステムは、認可トークン、認可されたエンティティの識別情報、及びオブジェクトIDを含むファイルシステムアクセスオブジェクトを返すことができる。いくつかの実施形態では、ファイルシステムアクセスオブジェクトは、ファイルシステムアクセスオブジェクトが有効なままである時間を制限するために、有効期限を有するトークンを含む。有効期限は、リンク呼び出し元がオブジェクトに再びアクセスしたいときに、レガシーリンクを使用しなければならず、レガシーリンクロジックに従わなければならないことを保証するために、比較的短くされ得る。
【0242】
いくつかの実施形態では、本方法は、ファイルシステムによって、ファイルシステムアクセスオブジェクトで識別されたオブジェクトに対する要求830を受信することを含む。例えば、ファイルシステム116は、ファイルシステムアクセスオブジェクトで識別されるオブジェクトに対する要求830を受信することができる。ファイルシステムアクセスオブジェクトは、認可されたエンティティの識別情報を含む認可トークンを含むことができる。認可トークンが、ノード835において、オブジェクトに対するアクセスパーミッションにおいてアクセスを許可されたサブジェクトID(sID及び/又はlink_sID)を含む場合(835)、ファイルシステム116は、ノード840において、オブジェクトを送信することができ、リンク呼び出し元は、オブジェクトに対するアクセスパーミッションと一致する。いくつかの実施形態では、オブジェクトをリンク呼び出し元に送信する前に(840)、ファイルシステム116は、リンクサービス136と対話して、他のリンクアクセス制限-例えば、レガシーリンクサービスによって規定されたようなアクセス制限-が存在し得るかどうかを判定する(837)ことができる。
【0243】
リンク呼び出し元は、オブジェクトを受け取ることができる(845)。
【0244】
図16は、コンピューティングシステム900の例を示し、これは、例えば、リンクサービス136を構成する任意のコンピューティングデバイス、又はシステムの構成要素が接続905を使用して互いに通信しているその任意の構成要素であり得る。接続905は、バスを介した物理的接続、又はチップセットアーキテクチャのようなプロセッサ910への直接接続であり得る。接続905はまた、仮想接続、ネットワーク接続、又は論理接続であることもできる。
【0245】
いくつかの実施形態では、コンピューティングシステム900は、本開示で説明される機能が、1つのデータセンタ、複数のデータセンタ、ピアネットワーク等内に分散され得る分散システムである。いくつかの実施形態では、説明されるシステム構成要素の1つ以上は、その構成要素が説明される機能の一部又は全部をそれぞれが実行する多数のそのような構成要素を表す。いくつかの実施形態では、構成要素は物理デバイス又は仮想デバイスであり得る。
【0246】
例示的なシステム900は、少なくとも1つの処理ユニット(CPU又はプロセッサ)910と、読み取り専用メモリ(ROM)920及びランダムアクセスメモリ(RAM)925などのシステムメモリ915を含む、様々なシステム構成要素をプロセッサ910に結合する接続905とを含む。コンピューティングシステム900は、プロセッサ910と直接接続されるか、プロセッサ910に近接して接続されるか、又はプロセッサ910の一部として統合された高速メモリ912のキャッシュを含むことができる。
【0247】
プロセッサ910は、任意の汎用プロセッサと、プロセッサ910を制御するように構成された、記憶装置930に記憶されたサービス932、934、及び936などのハードウェアサービス又はソフトウェアサービスと、ソフトウェア命令が実際のプロセッサ設計に組み込まれる専用プロセッサとを含むことができる。プロセッサ910は、本質的に、複数のコア又はプロセッサ、バス、メモリコントローラ、キャッシュなどを含む、完全に自己完結型のコンピューティングシステムであってもよい。マルチコアプロセッサは、対称又は非対称であってもよい。
【0248】
ユーザとの対話を可能にするために、コンピューティングシステム900は、入力デバイス945を含み、これは、音声用のマイクロフォン、ジェスチャ又はグラフィカル入力用のタッチセンシティブスクリーン、キーボード、マウス、モーション入力、音声など、任意の数の入力機構を表すことができる。コンピューティングシステム900はまた、出力デバイス935を含むことができ、これは、当業者に公知の多数の出力機構のうちの1つ以上であることができる。いくつかの例では、マルチモーダルシステムが、ユーザがコンピューティングシステム900と通信するために複数のタイプの入力/出力を提供することを可能にすることができる。コンピューティングシステム900は、通信インタフェース940を含むことができ、これは、一般に、ユーザ入力及びシステム出力を統治及び管理することができる。いかなる特定のハードウェア構成で動作することに制限はなく、したがって、本明細書での基本的な特徴は、改良されたハードウェア又はファームウェア構成に、それらが開発されるにつれて、容易に置き代わり得る。
【0249】
記憶装置930は、不揮発性メモリ装置であることができ、ハードディスク、又は、磁気カセット、フラッシュメモリカード、ソリッドステートメモリデバイス、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、及び/又はこれらのデバイスのいくつかの組合せなど、コンピュータによってアクセス可能なデータを記憶することができる他のタイプのコンピュータ可読媒体であることができる。
【0250】
記憶装置930は、ソフトウェアサービス、サーバ、サービスなどを含むことができ、そのようなソフトウェアを定義するコードがプロセッサ910によって実行されると、システムに機能を実行させる。いくつかの実施形態では、特定の機能を実行するハードウェアサービスは、機能を実行するために必要なハードウェア構成要素、例えばプロセッサ910、接続905、出力デバイス935など、に関連してコンピュータ可読媒体に記憶されたソフトウェア構成要素を含むことができる。
【0251】
説明を明瞭にするために、場合によっては、本技術は、デバイス、デバイス構成要素、ソフトウェアで具現化された方法におけるステップ又はルーチン、又はハードウェアとソフトウェアとの組合せからなる機能ブロックを含む個々の機能ブロックを含むものとして提示されることがある。
【0252】
本明細書で説明するステップ、動作、機能、又はプロセスの任意のものは、単独で、又は他のデバイスと組み合わせて、ハードウェア及びソフトウェアのサービス又はサービスの組合せによって実行又は実装されてもよい。いくつかの実施形態では、サービスは、クライアントデバイス及び/又はコンテンツ管理システムの1以上のサーバのメモリに常駐し、プロセッサがサービスに関連付けられたソフトウェアを実行するときに1以上の機能を実行するソフトウェアであり得る。いくつかの実施形態では、サービスは、特定の機能を実行するプログラム又はプログラムのコレクションである。いくつかの実施形態では、サービスはサーバとみなすことができる。メモリは、非一時的コンピュータ可読媒体であることができる。
【0253】
いくつかの実施形態では、コンピュータ可読記憶装置、媒体、及びメモリは、ビットストリームなどを含むケーブル信号又は無線信号を含み得る。しかしながら、言及される場合、非一時的コンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波、及び信号それ自体のような媒体を明示的に除外する。
【0254】
上述した実施例による方法は、コンピュータ可読媒体から記憶されるか、そうでなければ利用可能なコンピュータ実行可能命令を使用して実施することができる。このような命令は、例えば、汎用コンピュータ、専用コンピュータ、又は専用処理デバイスに特定の機能又は機能群を実行させるか、そうでなければ構成する命令及びデータを含むことができる。使用されるコンピュータ資源の一部は、ネットワークを介してアクセス可能であり得る。実行可能なコンピュータ命令は、例えば、バイナリ、アセンブリ言語などの中間フォーマット命令、ファームウェア、又はソースコードであってもよい。説明された実施例による方法中に使用される命令、情報、及び/又は作成される情報を記憶するために使用され得るコンピュータ可読媒体の例には、磁気ディスク又は光ディスク、ソリッドステートメモリデバイス、フラッシュメモリ、不揮発性メモリを備えるUSBデバイス、ネットワーク化された記憶デバイスなどが含まれる。
【0255】
これらの開示による方法を実施するデバイスは、ハードウェア、ファームウェア及び/又はソフトウェアから構成することができ、様々なフォームファクタのいずれかをとることができる。そのようなフォームファクタの典型的な例としては、サーバ、ラップトップ、スマートフォン、スモールフォームファクタのパーソナルコンピュータ、パーソナルデジタルアシスタントなどが挙げられる。また、本明細書で説明する機能は、周辺機器やアドインカードに具現化することもできる。このような機能はまた、さらなる例として、単一のデバイス内で実行される異なるチップ又は異なるプロセス間で回路基板上に実装することもできる。
【0256】
命令、そのような命令を伝達するための媒体、それらを実行するためのコンピューティングリソース、及びそのようなコンピューティングリソースをサポートするための他の構成は、これらの開示で説明される機能を提供するための手段である。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11A
図11B
図12A
図12B
図13
図14
図15A
図15B
図16
【手続補正書】
【提出日】2023-10-20
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
リンクサービスによって、パートナーサービスから、共同管理リンクによって参照されるオブジェクトへのアクセスを提供する第2の要求を受信することであって、
前記第2の要求は、前記パートナーサービスによって受信された、前記オブジェクトに関連する第1の要求の結果であり、
前記第1の要求は、リンク呼び出し元が、前記パートナーサービスによって有効なリンクとして決定されたパートナーサービスリンクを呼び出した結果であり、
前記パートナーサービスリンクは、前記第1の要求を介して、前記パートナーサービスによって、前記共同管理リンクにマッピングされた、ことと、
前記リンクサービスによって、前記共同管理リンクの検証、及びリンクロギングを含むリンクサービス機能を実行することと、
前記リンクサービス機能を実行した後、前記リンクサービスにより前記パートナーサービスに、前記オブジェクトを含むファイルシステムを指すファイルシステムアクセスオブジェクトを送信することであって、前記ファイルシステムアクセスオブジェクトは、認可トークン、認可されたエンティティの識別情報、及びオブジェクトIDを含む、ことと、
を含む、方法。
【請求項2】
前記パートナーサービスからの前記オブジェクトへのアクセスを提供する第2の要求は、前記パートナーサービスが、前記リンク呼び出し元が前記オブジェクトにアクセスすることを許可されていると判定した後に発生し、これにより、前記パートナーサービスと前記リンクサービスの両方が、それら自身のアクセス判定を行う、請求項1に記載の方法。
【請求項3】
前記認可されたエンティティの前記識別情報は、前記共同管理リンクに対応するlink_sIDである、請求項2に記載の方法。
【請求項4】
前記パートナーサービスから前記第2の要求を受信することに応答して、前記ファイルシステムを指す前記ファイルシステムアクセスオブジェクトを作成すること、
さらに含む請求項1に記載の方法。
【請求項5】
前記ファイルシステムアクセスオブジェクトは、前記ファイルシステムアクセスオブジェクトが有効であり続ける時間を制限するための有効期限を有する認可トークンを含む、請求項1記載の方法。
【請求項6】
前記ファイルシステムが前記オブジェクトを前記パートナーサービスに送信する前に、前記共同管理リンクに関連するアクセスレベル要求を前記リンクサービスに送信することと、
前記リンクサービスによって、前記共同管理リンクに関連付けられたアクセスレベルを判定することと、
前記リンクサービスによって、前記ファイルシステムに、前記共同管理リンクに関連付けられた前記アクセスレベルを送信すること、
をさらに含む、請求項1に記載の方法。
【請求項7】
前記ファイルシステムによって、前記ファイルシステムアクセスオブジェクトが、前記ファイルシステム内の前記オブジェクトに対するアクセスパーミッションにおいてアクセスが許可されている第1のsIDを識別するか否かを判定することと、
前記第1のsIDが前記オブジェクトへのアクセスを許可されている場合、前記オブジェクトに対する前記アクセスパーミッションと一致する前記パートナーサービスに、前記オブジェクトを送信することと、
をさらに含む、請求項1に記載の方法。
【請求項8】
前記リンク呼び出し元が前記ファイルシステムにユーザアカウントを有することを判定することと、
link_sIDに加えて、前記ユーザアカウントの第2のsIDを前記認可トークンに含めること、
をさらに含む、請求項7に記載の方法。
【請求項9】
前記共同管理リンクによって参照される前記オブジェクトへのアクセスを提供する前記第2の要求が、前記パートナーサービスに前記オブジェクトを要求する前記リンク呼び出し元を識別する、請求項1に記載の方法。
【請求項10】
前記リンクサービスのAPIによって、前記パートナーサービスから、アクセスレベル変更要求を受信することであって、前記アクセスレベル変更要求は、前記オブジェクトに対する少なくとも1つのアクセスパラメータの変更を含み、前記少なくとも1つのアクセスパラメータの前記変更は、前記共同管理リンクに適用される、こと、
さらに含む、請求項1に記載の方法。
【請求項11】
命令を含むプログラムであって、前記命令は、コンピューティングシステムによって実行されると、前記コンピューティングシステムに、
リンクサービスによって、パートナーサービスから、共同管理リンクによって参照されるオブジェクトへのアクセスを提供する第2の要求を受信することであって、
前記第2の要求は、前記パートナーサービスによって受信された、前記オブジェクトに関連する第1の要求の結果であり、
前記第1の要求は、リンク呼び出し元が、前記パートナーサービスによって有効なリンクとして決定されたパートナーサービスリンクを呼び出した結果であり、
前記パートナーサービスリンクは、前記第1の要求を介して、前記パートナーサービスによって、前記共同管理リンクにマッピングされた、ことと、
前記リンクサービスによって、前記共同管理リンクの検証、及びリンクロギングを含むリンクサービス機能を実行することと、
前記リンクサービス機能を実行した後、前記リンクサービスにより前記パートナーサービスに、前記オブジェクトを含むファイルシステムを指すファイルシステムアクセスオブジェクトを送信することであって、前記ファイルシステムアクセスオブジェクトは、認可トークン、認可されたエンティティの識別情報、及びオブジェクトIDを含む、ことと、
を行わせる、プログラム
【請求項12】
前記パートナーサービスからの前記オブジェクトへのアクセスを提供する第2の要求は、前記パートナーサービスが、前記リンク呼び出し元が前記オブジェクトにアクセスすることを許可されていると判定した後に発生し、これにより、前記パートナーサービスと前記リンクサービスの両方が、それら自身のアクセス判定を行う、請求項11に記載のプログラム
【請求項13】
記コンピューティングシステムによって実行されると、前記コンピューティングシステムに、
前記ファイルシステムによって、前記ファイルシステムアクセスオブジェクトが、前記ファイルシステム内の前記オブジェクトに対するアクセスパーミッションにおいてアクセスが許可されているsIDを識別するか否かを判定することと、
前記sIDが前記オブジェクトへのアクセスを許可されている場合、前記オブジェクトに対する前記アクセスパーミッションと一致する前記パートナーサービスに、前記オブジェクトを送信することと、
を行わせる命令をさらに含む、請求項11に記載のプログラム
【請求項14】
前記共同管理リンクによって参照される前記オブジェクトへのアクセスを提供する前記第2の要求が、前記パートナーサービスに前記オブジェクトを要求する前記リンク呼び出し元を識別する、請求項11に記載のプログラム
【請求項15】
記コンピューティングシステムによって実行されるとき、前記コンピューティングシステムに、
前記リンクサービスのAPIによって、前記パートナーサービスから、アクセスレベル変更要求を受信する命令であって、前記アクセスレベル変更要求は、前記オブジェクトに対する少なくとも1つのアクセスパラメータの変更を含み、前記少なくとも1つのアクセスパラメータの変更は、前記共同管理リンクに適用される、命令を、
さらに含む、請求項11に記載のプログラム
【請求項16】
パートナーサービスとのリンクを共同管理するためのリンクサービスシステムであって、
命令を格納するストレージと、
プロセッサであって、前記命令を実行し、前記リンクサービスシステムに、
パートナーサービスから、共同管理リンクによって参照されるオブジェクトへのアクセスを提供する第2の要求を受信することであって、
前記第2の要求は、前記パートナーサービスによって受信された、前記オブジェクトに関連する第1の要求の結果であり、
前記第1の要求は、リンク呼び出し元が、前記パートナーサービスによって有効なリンクとして決定されたパートナーサービスリンクを呼び出した結果であり、
前記パートナーサービスリンクは、前記第1の要求を介して、前記パートナーサービスによって、前記共同管理リンクにマッピングされた、ことと、
前記リンクサービスシステムによって、前記共同管理リンクの検証、及びリンクロギングを含むリンクサービス機能を実行することと
前記リンクサービス機能を実行した後、前記オブジェクトを含むファイルシステムを指すファイルシステムアクセスオブジェクトを前記パートナーサービスに送信し、前記ファイルシステムアクセスオブジェクトは、認可トークン、認可されたエンティティの識別情報、及びオブジェクトIDを含むこと、
行わせるように構成された、リンクサービスシステム
【請求項17】
前記パートナーサービスからの前記オブジェクトへのアクセスを提供する第2の要求は、前記パートナーサービスが、前記リンク呼び出し元が前記オブジェクトにアクセスすることを許可されていると判定した後に発生し、これにより、前記パートナーサービスと前記リンクサービスシステムの両方が、それら自身のアクセス判定を行う、請求項16に記載のリンクサービスシステム
【請求項18】
前記認可されたエンティティの前記識別情報は、前記共同管理リンクに対応するsIDである、請求項17に記載のリンクサービスシステム
【請求項19】
前記プロセッサは、前記命令を実行し、前記リンクサービスシステムに、
前記パートナーサービスから前記第2の要求を受信することに応答して、前記ファイルシステムを指す前記ファイルシステムアクセスオブジェクトを作成すること、
を行わせるようにさらに構成される、請求項16に記載のリンクサービスシステム
【請求項20】
前記ファイルシステムアクセスオブジェクトは、前記ファイルシステムアクセスオブジェクトが有効であり続ける時間を制限するための有効期限を有する認可トークンを含む、請求項16に記載のリンクサービスシステム
【国際調査報告】