バックストーリー:Raspberry Pi cctvカメラをセットアップするアイデアをいじっています。もともとはすべての映像を31日間(DPAに準拠して)ネットワークドライブに保存するつもりでしたが、私の施設で重大な事件があった場合、ドライブが盗まれたり破損したりする可能性があるとして、これに反対しました。
そこで、フッテージをGoogleドライブにアップロードし、別のスクリプトを実行して古いフッテージを削除できると思いました。私は pydrive に出会い、素晴らしいと思いました、私はpythonでかなり経験しているので、何かをノックアップできてとても幸せです。
問題は次の行です:
ダウンロードしたファイルには、アプリケーションのすべての認証情報が含まれています。ファイルの名前を「client_secrets.json」に変更し、作業ディレクトリに配置します。
私は一般的にoauth2とトークンの使用について非常に限られた知識しか持っていません。sshやpkiなどのアクセスキーを理解していると思います。
これらはRaspberry Pi zeroにローカルに保存されるため、盗まれた場合、バッグに詰め込まれ、十分な知識がある場合は、それをくまなく調べて、Googleドライブアカウントへのアクセスが見つかるかもしれません。
Raspberry Piがビデオフィードを保存するためにGoogleドライブにアクセスする必要がある場合、それはつまり、Raspberry PiがGoogleドライブにアクセスする必要があるため、Raspberry Piにアクセスできる人は誰でもGoogleドライブにアクセスできるということです。アプリケーションがドライブに直接アップロードできるようにすることも、攻撃者がアプリケーションの制御を取得した場合にドライブにアップロードすることもできないようにすることはできません。
ただし、すべてが失われるわけではありません。多くの最新のアプリエコシステム(Googleを含む)は、まさにこの種のもののために設計されています。ただし、認証がどのように機能し、正確に何をしているのかを理解するのに役立ちます。
pydrive
では、Googleドライブに直接アクセスするためのアクセス認証情報を作成する必要はありません。代わりに、OAuthクライアントIDを作成します。基本的に、これはGoogleに「アプリ」を登録していることを意味します(ただし、Playストアでの文字通りのアプリの意味ではありません)。 。このクライアントIDは、実際にはアカウントへのpydrive
アクセスを付与するのではなく、単にこの「アプリ」の所有者として登録するだけです。
実際にアカウントにアクセスするために、pydrive
はローカルでのログインプロセスを案内し、pydrive
はgoogleからアカウントへのアクセスを要求します。これはWebブラウザーを介して行われます(そのため、pydrive
はWebサーバーについて言及します)。次に、Googleはpydrive
にアカウントへのアクセスを許可するかどうかを尋ねます。承認すると、Googleはpydrive
にドライブへの実際のアクセスを許可する個別のアクセス認証情報を付与します。
それ以降、pydrive
アプリケーションは、アカウントにアクセスできるアプリのリストの下のGoogleアカウントに表示されます。 このページ で、おそらくOAuthクライアントIDを作成したときにGoogleに提供したアプリケーション名の下にあることがわかります。
Piが盗まれた場合、理論的には攻撃者がドライブの内容をダンプし、pydrive
が使用する実際のアカウント認証情報を保存した場所を見つけ、それらを使用して、アカウント(ただし、pydrive
に付与したすべての特権を使用して-完全なGoogleアカウントではありません)。
幸いなことに、それが発生した場合の解決策は簡単です。任意のブラウザーでGoogleアカウントにログインし、アカウントにアクセスできるアプリのリストに移動して、pydrive
からログアウトします。 OAuthクライアントIDがまだ利用可能であっても、攻撃者はメールとパスワードを使用して最初にGoogleにログインしないとアカウントに戻ることができませんが、明らかにそうではありません。
また、GoogleのAPIセクションに戻り、OAuth生成したクライアントIDを見つけて、それを取り消すこともできます。その時点では、攻撃者は何もしません。
では、盗まれたRaspberry Piを持っている攻撃者がGoogleドライブの資格情報にアクセスして問題を引き起こす可能性がある時間帯はありますか?はい。ただし、Piが盗まれたかどうかがわかり、Piをリモートからすぐにログアウトして、それ以上のアクセスを防止できるため、この時間帯は実際には非常に短い可能性があります。