CLI を使って、Akamai EAAのApplication に割り当てた Identity Connector を変更する

## Akamai EAAとは
Akamai Enterprise Application Access (EAA)とは、ゼロトラスト・ネットワーク・アクセス（ZTNA）に基づき、安全な業務アプリケーションを利用者へ提供できるクラウドサービスです。
https://www.akamai.com/ja/products/enterprise-application-access

EAAにてApplicationを設定することで、データセンターやIaaSに構成している業務アプリケーションに対して、利用者が常に認証・認可を行った上で接続することができます。
Identity Connectorは業務アプリケーションとEAAのクラウドを安全に結ぶ役割を果たし、高可用性や負荷分散のためにEAA Applicaitonに複数関連づけることができる仮想アプライアンスです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821330/dfdd1f30-1f58-e93f-0e35-f9e1162fa35d.png)


## Akamai EAAのApplicationに割り当てられているIdentity Connectorを変更
Akamai EAAのApplicationに設定しているIdentity Connectorを一括で追加や修正をしたい場合があります。Webベースの統合管理用インターフェースであるAkamai Control Center (ACC) にて設定することも可能ですが、本記事ではAkamai CLIを用いて一括で実施してみます。

今回の例では、EAA Application Webserver1～3に対して、既に関連付け済みの「tokyo-connector01」に対して、新たに「tokyo-connector02」を追加で関連付けしてみます。
※EAA Applicationに新しいIdentity Connectorを関連付ける前に、事前に仮想アプライアンスをデータセンターにデプロイする必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821330/56aec61b-803e-12f2-4b3c-2a9fdc1ebeb4.png)

大きな流れとしては以下の通りです。
- EAA ApplicationのApp IDをCLIにて取得
- Identity ConnectorのCon IDをCLIにて取得
- EAA Application(App ID)にIdentity Connector(Con ID)を割り当て
- EAA Applicationをデプロイ


## Akamai CLIの初期設定
Akamai CLIを利用するには、CLIコマンドのインストールおよび、APIクレデンシャルの作成が必要です。
それぞれ以下のドキュメントを参考に初期設定を実施します。すでに実施済みの場合は不要です。

APIクレデンシャルの作成

https://qiita.com/kabe-akam/items/499507d19220b44b4901

Akamai CLIのインストール

https://qiita.com/kabe-akam/items/cb08ebc2ad03b6ff3c58


上記に加え、EAA特有の作業を実施します。
Akamai CLIにeaaのパッケージをインストールします。
```
$ akamai install eaa
Attempting to fetch command from https://github.com/akamai/cli-eaa.git... ... [OK]
Installing... ... [OK]

Installed Commands:

  config
    Manage configuration
  eaa (alias: eaa/eaa)
    Akamai CLI for Enterprise Application Access (EAA)
  help
    Displays help information
  install (alias: get)
    Fetch and install packages from a Git repository
  list
    By default, displays installed commands. Optionally, can display package commands from Git repositories
  search
    Search for packages in the official Akamai CLI package repository
  uninstall
    Uninstall package containing <command>
  update
    Update one or more commands. If no command is specified, all commands are updated
  upgrade
    Upgrade Akamai CLI to the latest version

See "akamai help [command]" for details.
```

.edgercのdefaultセクションに、Contract ID（contract_id）を追加します。
```
[default]
client_secret = xxxxxxxxxxxxxxxxxx
host = xxxxxxxxxxxxxxxxxx
access_token = xxxxxxxxxxxxxxxxxx
client_token = xxxxxxxxxxxxxxxxxx

contract_id = 1-ABCDEF
```

Contrat IDはEnterprise Center（EAAの管理画面）画面の右上に表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821330/a2ae39b9-61ec-e7ea-2491-d14104436bda.png)




## App IDを検索する
akamai eaa searchにてEAA Applicationのapp_id (app://xyzxyz)を検索します。
ここではwebという名前が含まれているかを検索します。
```
$ akamai eaa search web
#app_id,type,name,host,cname,cert_id,status,reachable
app://ZStHffeef6qvPGQa67w,Hosted,Webserver1,example-web1,exmpale-web1.go.akamai-access.com,crt://None,Deployed,Y
app://N4MZoTkJSaeLfm1gAQ,Hosted,Webserver2,example-web2,exmpale-web2.go.akamai-access.com,crt://None,Deployed,Y
app://fyGf2ffeaf5CEidiIZg,Hosted,Webserver3,example-web2,exmpale-web3.go.akamai-access.com,crt://None,Deployed,Y
```

## Identity Connector名でEAA Applicationを検索する
適用されているIdentity Connectorの名前でEAA Applicationを検索する場合は、以下のコマンドを実行します。
ここでは、Identity Connectorの名称にtokyoが含まれているApplicationを検索します。
このコマンドでは、jqコマンドのパッケージが必要となります。
```
$ akamai eaa -b search | akamai eaa app - | jq -j '.name,",app://", .uuid_url, ",", .cname, ",", (.agents[]|.name, " "), "\n"'|grep tokyo
Webserver1,app://ZStHffeef6qvPGQa67w,example-web1.go.akamai-access.com,tokyo-connector01
Webserver2,app://N4MZoTkJSaeLfm1gAQ,example-web2.go.akamai-access.com,tokyo-connector01
Webserver3,app://fyGf2ffeaf5CEidiIZg,example-web3.go.akamai-access.com,tokyo-connector01
```


## Identity ConnectorのIDを検索する
Identity ConnectorのIDを検索します。
この例では、既存のtokyo-connector01に加えて、追加するtokyo-connector02をデプロイ済みという前提のため、２つのIdentity Connectorがリスト表示されています。

```
必要に応じてgrepも可能です。
$ akamai eaa connector list  ( | grep tokyo)
con://yN_1n7fe333UWuJuJ8CWQ,tokyo-connector01,1,1,21.01.0-152,192.168.0.101,198.51.100.101,Y
con://Wz6ggeeeeiRmuJj8rpZ-Q,tokyo-connector02,1,1,22.01.0-649,192.168.0.102,198.51.100.102,Y
```
::: note info
EAA Applicationに新しいIdentity Connectorを検索や関連付ける前に、事前に仮想アプライアンスをデータセンターにデプロイする必要があります。
:::

## ApplicationにIdentity Connectorを追加・削除する
akamai eaa search web で検索した３つのApplicationに対して、既存のtokyo-connector01に加え、新しくデプロイしたtokyo-connector02をattachオプションにて追加します。
・app app://xyzxyz に対象AppのApp IDを記載します。
・attach con://xyzxyz に追加するIdentity Connectorを並べて記載します。
```
$ akamai eaa app app://ZStHffeef6qvPGQa67w attach con://yN_1n7fe333UWuJuJ8CWQ con://Wz6ggeeeeiRmuJj8rpZ-Q
$ akamai eaa app app://N4MZoTkJSaeLfm1gAQ attach con://yN_1n7fe333UWuJuJ8CWQ con://Wz6ggeeeeiRmuJj8rpZ-Q
$ akamai eaa app app://fyGf2ffeaf5CEidiIZg attach con://yN_1n7fe333UWuJuJ8CWQ con://Wz6ggeeeeiRmuJj8rpZ-Q

```

ACCのEnterprise Centerにて該当のEAA Applicationを確認するとIdentity Connectorが追加されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821330/8aeb287d-0066-e370-7bd7-0846272b8aef.png)



削除の場合はdetachオプションを実行します。
```
$ akamai eaa app app://fyGf2ffeaf5CEidiIZg detach con://yN_1n7fe333UWuJuJ8CWQ 
```


## Applicationをデプロイする
最後にApplicationをデプロイして、変更を反映します。
デプロイについては業務に影響がないタイミングで実施します。
```
$ akamai eaa app app://ZStHffeef6qvPGQa67w deploy --comment "Add Connector tokyo-connector02" 
Application app://ZStHffeef6qvPGQa67w deployment requested, it may take a few minutes before it gets live.

$ akamai eaa app app://N4MZoTkJSaeLfm1gAQ deploy --comment "Add Connector tokyo-connector02" 
Application app://N4MZoTkJSaeLfm1gAQ deployment requested, it may take a few minutes before it gets live.

$ akamai eaa app app://N4MZoTkJSaeLfm1gAQ deploy --comment "Add Connector tokyo-connector02" 
Application app://N4MZoTkJSaeLfm1gAQ deployment requested, it may take a few minutes before it gets live.
```

ACCのEnterprise Centerでデプロイの進捗状況が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821330/aa49242a-559e-f23f-4762-fbe695ceaaa9.png)


## まとめ
Akamai CLIにてEAA ApplicationにIdentity Connectorを割り当てることで、多くのApplicationがあった場合でも一括で作業を行うことができます。可用性の強化や利用ユーザーの大幅な変更など、Identity Connectorを追加する必要がある場合は活用してみてください。


## 関連記事
https://github.com/akamai/cli-eaa

https://github.com/akamai/cli-eaa/blob/master/docs/install.md