デフォルトの暗号プロバイダを切り替える

このドキュメントでは、Rust でデフォルトの rustls 暗号プロバイダを切り替える方法について説明します。アプリケーションにデフォルトでは満たされない特定の要件がある場合は、デフォルトの暗号プロバイダを切り替えることをおすすめします。

Rust クライアント ライブラリは Rustls を使用して、アプリケーションと Google Cloud間の通信を保護します。Rustls は、暗号機能にさまざまなプロバイダを使用できます。デフォルトでは、クライアント ライブラリは aws-lc-rs プロバイダを有効にします。クライアント ライブラリでは、Google が実装した評価の高い暗号ライブラリである BoringSSL に基づいており、FIPS 認定を受けている唯一の Rust 暗号プロバイダであるため、これがデフォルトとして使用されます。

ただし、一部のアプリケーションでは別のプロバイダを使用する必要がある場合があります。このガイドでは、デフォルトのプロバイダを無効にして独自のプロバイダを構成する方法について説明します。google-cloud-storage を使用して、Rust の要件を変更する方法を説明します。ring を代替の暗号プロバイダとして使用します。このプロセスは、他のクライアント ライブラリ用にカスタマイズできます。他のプロバイダについては、rustls のドキュメントをご覧ください。

デフォルトの暗号プロバイダでクライアント ライブラリを使用する

デフォルトの暗号プロバイダを使用するには、クライアント ライブラリを依存関係として Cargo.toml ファイルに追加します。

[dependencies]
google-cloud-storage = { version = "1" }

デフォルトの暗号プロバイダを使用し、他のデフォルト機能を無効にする

一部のアプリケーションでは、依存関係のデフォルト機能をすべて無効にしてから、使用する機能のみを有効にすることが推奨されます。たとえば、Cargo.toml は次のようになります。

[dependencies]
google-cloud-storage = { version = "1", default-features = false }

デフォルト プロバイダ機能のみを有効にするには、次のコマンドを使用します。

[dependencies]
google-cloud-storage = { version = "1", default-features = false, features = ["default-rustls-provider"] }

独自の暗号プロバイダを使用する

独自のプロバイダを選択するには:

  1. デフォルトの機能を無効にして Rust を追加し、プロバイダに必要な依存関係を含めます。このガイドでは、ring を使用しています。

    `google-cloud-storage` と同じバージョンの `rustls` を使用する必要があります。
    [dependencies]
    google-cloud-storage = { version = "1", default-features = false }
    rustls               = { version = "0.23", features = ["ring"] }
    
  2. このプロバイダをインストールするように main() 関数を変更します。

    use rustls::crypto::{CryptoProvider, ring::default_provider};
    
    #[tokio::main]
    async fn main() -> anyhow::Result<()> {
        // Install a default crypto provider.
        CryptoProvider::install_default(default_provider())
            .map_err(|_| anyhow::anyhow!("default crypto provider already installed"))?;
        // ... ... ...
        Ok(())
    }