[新機能]WorkSpacesのデバイス認証を利用しセキュアにアクセス

2017.07.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンニチハ、千葉です。

WorkSpacesにデバイス認証機能が追加されました。これは、嬉しい方多いんじゃないかと思います。

WorkSpacesへの認証は、ID/パスワード/登録コード、 多要素認証がありました。

今回は追記された機能として、アクセス許可するデバイスの指定、証明書を利用したクライアントアクセスが可能となりました。これで、特定のデバイスからのアクセスのみを許可することができるようになります。WorkSpacesは基本的にインターネット接続になるので、特定デバイスからのアクセスのみを許可することができるので、導入のハードルも下がると思います。ではさっそく試してみます。

前提

最新のWorkSpacesアプリをダウンロードしてインストールする利用する必要があります。私が実施したときは「2.3.3.318」でした。 ダウンロードはこちら

20170619-workspaces-devaice-auth-6

アクセスデバイスの指定

どの種類のデバイスからのアクセスを許可するかを選択します。例えば、webのみ許可、ipadのみ許可のように指定できます。

WorkSpacesのDirectoriesから、「Update Details」を選択します。

20170619-workspaces-devaice-auth-1

許可する任意のデバイスを選択します。

20170619-workspaces-devaice-auth-2

ためしに、Blockしてアクセスしてみました。設定通りにブロックされアクセスできませんでした。

20170619-workspaces-devaice-auth-3

利用想定のない端末からのアクセスをブロックするとよさそうです。

証明書を利用したクライアントアクセス

次は証明書を使ってデバイス認証してみます。クライアント証明書をアクセス端末にインストールし、証明書持っている端末のみアクセスを許可できるように設定します。

opensslコマンドで鍵ファイルを作成して利用してみました。

openssl genrsa -out my-private-key.pem 2048
openssl req -sha256 -new -key my-private-key.pem -out csr.pem # Common NameにADと同じドメインを指定しました
openssl x509 -sha256 -req -days 36500 -in csr.pem -signkey my-private-key.pem -out my-certificate.crt

openssl pkcs12 -export -in my-certificate.crt -inkey my-private-key.pem -out myuser.p12 # パスワードを入力すること

作成した公開鍵を登録します。WorkSpacesのDirectoriesから、「Update Details」を選択します。「my-certificate.crt」をimportします。

20170619-workspaces-devaice-auth-4

クライアント証明書をインストールします。(Macのやり方です)。「myuser.p12」をダブルクリックします。パスワードを聞かれますので、鍵ファイルを作成した時に設定したパスワードを入力します。

20170619-workspaces-devaice-auth-5

キーチェーンに証明書がインストールされました。

20170619-workspaces-devaice-auth-7

アクセスしてみます。アクセスできました!

最後に

WorkSpacesへのアクセスについて、さらにセキュアにできないかという問い合わせを頂くことが何度か有りました。今回の機能追加により、証明書やデバイスの指定ができるようになり、こちらを利用することで認証に関するセキュリティを向上できます!!

参考

https://aws.amazon.com/blogs/aws/new-managed-device-authentication-for-amazon-workspaces/

opensslのインストール確認

$ sudo yum update -y
$ rpm -qa | grep openssl
openssl-1.0.1k-15.99.amzn1.x86_64

認証局(CA)の作成

sudo mkdir -p /etc/pki/workspaces/newcerts
cd /etc/pki/workspaces/
echo "01" | sudo tee serial
sudo touch index.txt
sudo vi openssl_ca.cnf
# => dir = /etc/pki/workspaces に
sudo openssl req -new -x509 -keyout cakey.pem -out cacert.pem -days 3560 -config openssl_ca.cnf # 任意のパスワードを入力
# 入力例
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:chiba
Email Address []:

認証局の公開鍵、秘密鍵が作成されます。

$ ls -ltr
total 28
drwxr-xr-x 2 root root  4096 Jun 26 01:06 newcerts
-rw-r--r-- 1 root root     3 Jun 26 01:07 serial
-rw-r--r-- 1 root root 10931 Jun 26 01:08 openssl_ca.cnf
-rw-r--r-- 1 root root  1834 Jun 26 01:10 cakey.pem
-rw-r--r-- 1 root root  1306 Jun 26 01:10 cacert.pem

クライアント証明書の作成

sudo mkdir Client
cd Client/
sudo openssl genrsa -out client.key 2048
sudo openssl req -new -key client.key -out client.csr -sha256
# 入力例
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Akihabara
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:AWS
Common Name (eg, your name or your server's hostname) []:chiba.com
sudo cp ../openssl_ca.cnf .
sudo vi openssl_ca.cnf
# => dir = /etc/pki/workspaces
# => private_key     = $dir/cakey.pem に
# => nsCertType = client, email のコメントアウトを削除
sudo openssl ca -config openssl_ca.cnf -out client.crt -infiles client.csr
sudo openssl pkcs12 -export -in client.crt -inkey client.key -certfile ../cacert.pem -name chiba.com -out workspaces.p12