LoginSignup
0
1

[Gmail API] JavaでGmailクライアントサイド暗号化(CSE)されたキーペアを生成・更新・削除する

Posted at

Gmail API v1(Java)を使用して、
Gmailクライアントサイド暗号化(CSE)されたキーペアを生成・更新・削除する方法
についてご紹介します。

Gmailクライアントサイド暗号化とは
メールデータをGoogleクラウドベースストレージに転送または保存する前に
ブラウザ内で暗号化を行う仕組みです。
送信先の相手が受信するまで、メールデータは保護されます。
これにより機密データや規制対象データのコンテンツの機密性保持を強化できます。

このAPIは、ドメイン全体の権限を委任されたサービスアカウントを
使用しての発行のみ利用可能です。OAuth 2.0では利用できません。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Gmail API] JavaでGmail APIを使う
を参照ください。

No 目次
1 キーペアを生成
1 スコープ
2 実行
3 レスポンスの内容
2 キーペアを無効にする
1 スコープ
2 実行
3 レスポンスの内容
3 キーペアを有効にする
1 スコープ
2 実行
3 レスポンスの内容
4 キーペアを削除
1 スコープ
2 実行
3 レスポンスの内容

1. キーペアを生成

認証されたユーザーのクライアント側の暗号化キーのペアリストを生成します。

1.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

GmailScopes.GMAIL_SETTINGS_BASIC
GmailScopes.GMAIL_SETTINGS_SHARING

⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)
でスコープを指定してください。

1.2. 実行

public static void main(String[] args) throws Exception{
	Gmail gmail = getGmail();
	Gmail.Users users = gmail.users();
	Gmail.Users.Settings settings = users.settings();

	Gmail.Users.Settings.Cse.Keypairs keypairs = settings.cse().keypairs();
	CseKeyPair content = new CseKeyPair();
	Gmail.Users.Settings.Cse.Keypairs.Create create = keypairs.create("メールアドレス",content);

	CseKeyPair res = create.execute();
	System.out.println(res);
}

1.2.1. HTTPリクエスト

POST: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/cse/keypairs
が実行されます。

1.2.2. クエリパラメータ

クエリパラメータはありません。

1.2.3. リクエストボディ

CseKeyPairのsetメソッドにより、リクエストボディを追加できます。

メソッド 引数 説明
setPkcs7 String 公開キーとその証明書チェーン
setPrivateKeyMetadata List<CsePrivateKeyMetadata> キーペアの秘密キーのメタデータ

CsePrivateKeyMetadata(Set)

メソッド 引数 説明
setSetKaclsKeyMetadata List<KaclsKeyMetadata> 外部キーアクセス制御リスト
setHardwareKeyMetadata()と一方のみ設定可能
setHardwareKeyMetadata List<HardwareKeyMetadata> ハードウェアキーのメタデータリスト
setSetKaclsKeyMetadata()と一方のみ設定可能

KaclsKeyMetadata(Set)

メソッド 引数 説明
setKaclsUri String 秘密キーを管理するキーURI
setKaclsData String キー アクセス制御リストのデータ
最大:8kb

HardwareKeyMetadata(Set)

メソッド 引数 説明
setDescription String ハードウェアキーについての説明

1.3. レスポンスの内容

CseKeyPair

メソッド 戻り値 説明
getNextPageToken String 次のページを取得するたのページトークン
getCseKeyPairs List<CseKeyPair> CSEキーペアのリスト

CseKeyPair

メソッド 戻り値 説明
getKeyPairId String キーペアID
getPem String PEM形式の公開キーとその証明書チェーン
getSubjectEmailAddresses Lisr<String> リーフ証明書に指定されているメールアドレスID
getEnablementState EnablementState(enum) キーペアの現在の状態
getDisableTime String キーペアの状態がDisableに変化した時刻
getPrivateKeyMetadata List<CsePrivateKeyMetadata> キーペアの秘密キーのメタデータリスト

CsePrivateKeyMetadata

メソッド 戻り値 説明
getPrivateKeyMetadataId String 秘密キーのメタデータID
getSetKaclsKeyMetadata List<KaclsKeyMetadata> 外部キーアクセス制御リスト
getHardwareKeyMetadata()と一方のみ設定可能
getHardwareKeyMetadata List<HardwareKeyMetadata> ハードウェアキーのメタデータリスト
getSetKaclsKeyMetadata()と一方のみ設定可能

KaclsKeyMetadata

メソッド 戻り値 説明
getKaclsUri String アクセス制御リストのサービスURI
getKaclsData String サービスによって生成および使用されるデータ(最大サイズ:8Kbyte)

HardwareKeyMetadata

メソッド 戻り値 説明
getDescription String ハードウェアキーについての説明

EnablementState

定義値 内容
stateUnspecified 未設定
enabled キーペアがオン
disabled キーペアがオフ

2. キーペアを無効にする

既存のクライアント側の暗号化キーのペアを無効にします。

更新したいキーペアのIDを指定します。
1. キーペアリストを生成(CseKeyPair)
getKeyPairId()で取得した値を設定します。

2.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

GmailScopes.GMAIL_SETTINGS_BASIC
GmailScopes.GMAIL_SETTINGS_SHARING

⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)
でスコープを指定してください。

2.2. 実行

public static void main(String[] args) throws Exception{
	Gmail gmail = getGmail();
	Gmail.Users users = gmail.users();
	Gmail.Users.Settings settings = users.settings();

	Gmail.Users.Settings.Cse.Keypairs keypairs = settings.cse().keypairs();
	Gmail.Users.Settings.Cse.Keypairs.Disable disable = keypairs.disable("メールアドレス","キーペアID",null);

	CseKeyPair res = disable.execute();
	System.out.println(res);
}

2.2.1. HTTPリクエスト

POST: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/cse/keypairs/{キーペアID}:disable
が実行されます。

2.2.2. クエリパラメータ

クエリパラメータはありません。

2.3. レスポンスの内容

CseKeyPair

1.3. レスポンスの内容(CseKeyPair)と同じです。

3. キーペアを有効にする

既存のクライアント側の暗号化キーのペアを有効にします。

更新したいキーペアのIDを指定します。
1. キーペアリストを生成(CseKeyPair)
getKeyPairId()で取得した値を設定します。

3.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

GmailScopes.GMAIL_SETTINGS_BASIC
GmailScopes.GMAIL_SETTINGS_SHARING

⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)
でスコープを指定してください。

3.2. 実行

public static void main(String[] args) throws Exception{
	Gmail gmail = getGmail();
	Gmail.Users users = gmail.users();
	Gmail.Users.Settings settings = users.settings();

	Gmail.Users.Settings.Cse.Keypairs keypairs = settings.cse().keypairs();
	Gmail.Users.Settings.Cse.Keypairs.Enable enable = keypairs.enable("メールアドレス","キーペアID",null);

	CseKeyPair res = enable.execute();
	System.out.println(res);
}

3.2.1. HTTPリクエスト

POST: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/cse/keypairs/{キーペアID}:enable
が実行されます。

3.2.2. クエリパラメータ

クエリパラメータはありません。

3.3. レスポンスの内容

CseKeyPair

1.3. レスポンスの内容(CseKeyPair)と同じです。

4. キーペアを削除

既存のクライアント側の暗号化キーのペアを有効にします。

更新したいキーペアのIDを指定します。
1. キーペアリストを生成(CseKeyPair)
getKeyPairId()で取得した値を設定します。

4.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

GmailScopes.GMAIL_SETTINGS_BASIC
GmailScopes.GMAIL_SETTINGS_SHARING

⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)
でスコープを指定してください。

4.2. 実行

public static void main(String[] args) throws Exception{
	Gmail gmail = getGmail();
	Gmail.Users users = gmail.users();
	Gmail.Users.Settings settings = users.settings();

	Gmail.Users.Settings.Cse.Keypairs keypairs = settings.cse().keypairs();
	Gmail.Users.Settings.Cse.Keypairs.Obliterate obliterate = keypairs.obliterate("メールアドレス","キーペアID",null);

	obliterate.execute();
}

4.2.1. HTTPリクエスト

POST: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/cse/keypairs/{キーペアID}:obliterate
が実行されます。

2.2.2. クエリパラメータ

クエリパラメータはありません。

4.3. レスポンスの内容

レスポンスはありません。
削除に失敗した場合、例外が発生します。



おしまい。。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1