サポート対象エディション: Enterprise Plus、Education Standard、Education Plus。 エディションの比較
Gmail で Google Workspace クライアントサイド暗号化(CSE)を使用するには、Gmail API を有効にして、組織全体にアクセスできるようにする必要があります。次に、各ユーザーについて、Gmail API を使用して S/MIME(Secure/Multipurpose Internet Mail Extensions)証明書(公開鍵)と秘密鍵メタデータを Gmail にアップロードする必要があります。暗号鍵サービスを使用している場合は、鍵サービスを使用してユーザーの秘密鍵のメタデータを暗号化(「ラップ」)する必要もあります。
新しい S/MIME 証明書と新しいサービスで暗号化された秘密鍵のメタデータをアップロードすることで、いつでも別の鍵サービスに切り替えることができます。
S/MIME について
S/MIME は、メールの整合性とセキュリティを確保するためにメールをデジタル署名して暗号化する業界標準プロトコルで、広く採用されています。Gmail CSE は S/MIME 3.2 IETF 規格に従ってセキュアな MIME データを送受信します。S/MIME では、メールの送信者と受信者は各 X.509 証明書が Gmail による信頼を得られるようにする必要があります。
注: もしくは、CSE が提供する追加の暗号化やプライバシー レイヤなしで S/MIME を使用することもできます。この方法は、データが Google のサーバーによって CSE で復号されても構わない場合にのみ採用してください。 詳しくは、ホスト型 S/MIME を有効にしてメールを暗号化するをご覧ください。
始める前に
以下の手順が完了していることを確認します。
- 鍵サービスを 1 つ選択します。
- ご利用の ID プロバイダ(IdP)に接続します。
- 外部鍵サービスまたはハードウェア キー暗号化を設定します。
- 組織部門またはグループに鍵サービスまたはハードウェア キー暗号化を割り当てます。
複数の鍵サービスを使用している場合は、それぞれのサービスが適切な組織部門または設定グループに割り当てられていることを確認します。
Gmail API を設定する
注: API の使用にはプログラミングの知識が必要です。
- 新しい GCP プロジェクトを作成します。詳しくは、プロジェクトの作成と管理をご覧ください。
プロジェクト ID をメモする: API ドメイン全体へのアクセス権を付与する際にこれを使用することになります。
- Google API Console にアクセスし、新しいプロジェクトに対して Gmail API を有効にします。詳しくは、Google Cloud プロジェクトでの API の有効化をご覧ください。
- Google Cloud コンソールで [サービス アカウント] ページに移動し、ドメイン全体のサービス アカウントを作成します。詳しくは、サービス アカウントの作成と管理をご覧ください。
- サービス アカウントの秘密鍵を作成して、ローカル システムの JSON ファイル(
svc_acct_creds.json
)に保存します。このファイルには、ユーザー向けに Gmail を設定するときに使用する認証情報が含まれています。詳しくは、サービス アカウント キーの作成と管理をご覧ください。
ここでは、作成したサービス アカウントを使用してすべてのユーザーに対する Gmail API の編集権限を付与します。
- API アクセスをドメイン全体の委任で制御するの手順を実施します。
- プロンプトが表示されたら、次のように入力します。
クライアント ID: 前述の手順 2 で作成したサービス アカウントのクライアント ID。
OAuth スコープ:
gmail.settings.readonly
およびgmail.settings.basic
、gmail.settings.sharing
ユーザーに対して Gmail CSE をオンにする
組織部門またはグループに対して Gmail の CSE をオンにします。詳しくは、クライアントサイド暗号化をオンまたはオフにするをご覧ください。
注: 組織部門に対しては、すべてのメール(作成、返信、転送)をデフォルトで暗号化するよう設定できます。その場合でも、必要に応じてユーザー自身で暗号化をオフにできます。Requires having the Assured Controls or Assured Controls Plus add-on.
ユーザーの CSE S/MIME 証明書を設定する
Gmail API を設定し、管理コンソールでユーザーに対して Gmail CSE を有効にしたら、ユーザーに対して CSE S/MIME 証明書と秘密鍵メタデータを設定できます。
手順 1: S/MIME 証明書と秘密鍵のメタデータを準備するGmail CSE を使用してメールを送受信するユーザーごとに、次の操作を行います。
認証局(CA)を使用して、証明書チェーンと S/MIME の公開鍵/秘密鍵のペアを生成します。S/MIME リーフ証明書には、サブジェクト名または SAN 拡張機能のサブジェクトとして、ユーザーのメインの Gmail アドレスを含める必要があります。
次のいずれかの方法を使用できます。
- Google の信頼を得ている CA ルート証明書を使用する: ルート証明書のリストについては、Gmail for S/MIME による信頼を得ている CA 証明書をご覧ください。
- Google の信頼を得ていない CA を使用する: たとえば、独自の CA を使用する場合は、管理コンソールでそのルート証明書を追加します。詳しくは、S/MIME の信頼できる証明書を管理するをご覧ください。
注: Google の信頼を得ていない CA を使用し、ユーザーがクライアントサイド暗号化を適用したメールを組織外に送信する場合、受信者もその CA を信頼する必要があります。
鍵サービスを使用して S/MIME 秘密鍵のメタデータを暗号化または「ラップ」します。鍵サービスにこの作業を依頼するか、所定の手順に沿って操作してください。
ハードウェア キー暗号化を使用している場合 - この手順をスキップし、ハードウェア キー暗号化を使用するユーザーの秘密鍵のメタデータをラップしないでください。この場合、メタデータをラップする必要はありません。Gmail 向けのユーザーの秘密鍵はスマートカードに保存されているからです。 Requires having the Assured Controls or Assured Controls Plus add-on.
Gmail API を使用して、各ユーザーの公開鍵 S/MIME 証明書チェーンと秘密鍵のメタデータを Gmail にアップロードし、ID を作成して各ユーザーが優先する鍵として設定する必要があります。
認証用にドメイン全体のサービス アカウントを作成したときにダウンロードした秘密鍵ファイルを使用して、ユーザーごとに次の手順を実施します。
- Gmail API 呼び出し
keypairs.create
を使用して、証明書チェーンと秘密鍵メタデータをアップロードします。 - Gmail API 呼び出し
identities.create
を使用して、ユーザーのメインのメールアドレスの鍵ペアを有効にします。identities.create
呼び出しには、keypairs.create
呼び出しのレスポンス本文で返される鍵ペア ID が必要です。注: ユーザーのメールアドレスの鍵ペアを有効にするには:
- ユーザーのアカウントからメールを送信する権限のある CSE ID を作成します。
- 送信する CSE メールの署名に秘密鍵のメタデータを使用するよう Gmail を構成します。
- 証明書を共有されたドメイン全体のリポジトリに公開し、組織内の他の CSE ユーザーがこのユーザーに送信されるメッセージを暗号化できるようにします。
これらの手順を完了するには、Gmail API とやり取りを行うスクリプトを使用します。次のいずれかの方法を使用できます。
- 独自のスクリプトを作成する。
- Google が提供する Python サンプル スクリプトを使用する。手順については、後述の Google の Python サンプル スクリプトを使用してユーザーの証明書とラップされた秘密鍵を Gmail にアップロードするをご覧ください。
注: このスクリプトは、Gmail のコンテンツの暗号化に鍵サービスを使用するユーザーにのみ適用されます。ハードウェア キー暗号化を使用するユーザー向けに、別のスクリプトを作成して、ラップ解除された秘密鍵のメタデータをアップロードする必要があります。
証明書のアップロード後、Gmail で証明書を利用できるようになるまでには最長で 24 時間ほどかかることがありますが、通常はそれほど時間はかかりません。
上記の手順 3 を完了するには、独自のスクリプトを作成する代わりに、Google が提供する Python スクリプトを使用することも可能です。
注: このスクリプトでは、Gmail API にドメイン全体へのアクセス権を付与するために使用できる 3 つのスコープ(このページの上部に記載)である gmail.settings.readonly
、gmail.settings.basic
、gmail.settings.sharing
をリクエストします。スクリプトを使用するには、3 つのスコープをすべて有効にするか、使用していないスコープをスクリプトから削除してください。
スクリプトをダウンロードする
Python スクリプト パッケージ(.zip)をパソコン(Mac、Linux、Windows)にダウンロードし、ファイルを作業ディレクトリに展開します。
仮想環境を作成してモジュールをインストールする
作業ディレクトリでコマンドラインを使用して、次のコマンドを入力します。
python3 -m venv cli_env
source cli_env/bin/activate
pip install -r requirements.txt
スクリプトを起動する
python cse_cmd.py -h
ユーザーの証明書と鍵をアップロードする
手順 1: ラップされたすべての秘密鍵を保存するディレクトリを作成する
- たとえば、
$root/wrap_keys
ディレクトリを作成するとします。 - ラップされた各秘密鍵のファイル名は、ユーザーの完全なメールアドレスに
.wrap
拡張子をつけたものにする必要があります(例:$root/wrapped_keys/[email protected]
)。 - ラップされた秘密鍵ファイルに、次の 2 つの必須項目を含む JSON オブジェクトがあることを確認します。
{
'kacls_url': '管理コンソールで設定された鍵サービスの URL',
'wrap_private_key': 'ラップされた秘密鍵(バイト表示)'
}
手順 2: すべての証明書を保存するためのディレクトリを作成する
- 証明書は P7 PEM 形式にする必要があるため、
$root/p7pem_certs
ディレクトリを作成します。 - 証明書ファイルに、ルート認証局(CA)へのチェーン全体が含まれていることを確認します。
- 各証明書のファイル名は、ユーザーの完全なメールアドレスに
.p7pem
拡張子をつけたものにする必要があります(例:$root/p7pem_certs/[email protected]
)。
P7B ファイルがある場合: 次の openssl コメントを使用して、P7 PEM 形式に変換できます。
openssl pkcs7 -inform DER -in {old_name.p7b} -outform PEM -out {new_name.p7pem}
手順 3: ユーザーの鍵ペアと ID をアップロードする
この手順を行うには、上記の手順 2: サービス アカウントを作成するでパソコンに保存した、サービス アカウントの認証情報が含まれる JSON ファイルが必要です。
ユーザーの鍵ペアと ID をアップロードする最も簡単な方法は、insert
コマンドを実行することです。各コマンドには引数が必要です。次に例を示します。
python cse_cmd.py insert
--creds $root/svc_acct_creds.json
--inkeydir $root/wrapped_keys
--incertdir $root/p7pem_certs
または、ユーザーごとに次の操作を行います。
insert_keypair
を実行し、鍵ペア ID をメモします。- その鍵ペア ID を使用して
insert_identity
を実行します。
鍵ペア ID は、list_keypair
コマンドを実行して取得することもできます。
手順 4: ユーザーが CSE の鍵ペアと ID を持っていることを確認する
各ユーザーに対して次のコマンドを実行し、ユーザーが Gmail で有効な鍵ペアと ID を持っていることを確認します。
list_keypair
list_identity
Gmail CSE の鍵サービスを別のサービスに切り替える
Gmail CSE の鍵サービスを別のサービスに切り替える場合は、前述のユーザーに対して Gmail CSE を設定するの手順 2 と 3 を繰り返して、新しい鍵サービスを使用して秘密鍵をラップします。
注: ユーザーの新しい証明書をアップロードしても、コンテンツが新しい鍵サービスに移行されるわけではありません。ただし、以前の鍵で暗号化されたメールと、以前の鍵サービスでラップされた秘密鍵のメタデータには、引き続きアクセスできます。
クライアントサイド暗号化が適用されたメールとして Gmail にメールを移行する
Gmail CSE が設定されたので、必要に応じてメッセージをインポートできます。詳しくは、クライアントサイド暗号化が適用されたメールとして Gmail にメールを移行するをご覧ください。