組織内の AWS アカウントの代替連絡先を統一管理する

## はじめに
2021/10/1 のアップデートで組織内のメンバーアカウントの代替連絡先を API 経由で管理できるようになりました。更に 2022/2/9 のアップデートで AWS Organizations コンソールでこれらの操作が簡単にできるようになりました。

https://aws.amazon.com/jp/about-aws/whats-new/2021/10/programmatically-manage-alternate-contacts-aws-accounts/

https://aws.amazon.com/jp/about-aws/whats-new/2022/02/aws-organizations-console-manage-alternate-contacts/

## 代替連絡先とは
アカウント情報からオプションで設定できる請求、操作、セキュリティに関するやり取りのための連絡先を指します。組織内で複数アカウントを運用している場合、適切な部門が AWS の通知を受け取るようにしたいケースがあります。例えばセキュリティの連絡先を CSIRT や CCoE が管理する連絡先に設定しておくことで、不正利用 (Abuse Report) などの重要な通知を受け取り、応答できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/6af8257b-6589-0096-c14f-5f9caf22aeb8.png)

以前は各アカウントで代替連絡先を更新する必要がありましたが、前述のアップデートにより組織の管理アカウントまたは委任された管理者アカウントからメンバーアカウントの代替連絡先を設定できるようになっています。

## やってみる
### 信頼されたアクセスの有効化
AWS Organizations で代替連絡先の管理を行うには以下の前提条件を満たしている必要があります。

* Organizations の「すべての機能」が有効になっている (デフォルト有効)
* AWS Account Management の「信頼されたアクセス」が有効になっている (デフォルト無効)

信頼されたアクセスが無効の状態で、アカウントの詳細から連絡先情報タブを選択すると以下のように表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/25a9ff46-5e2f-5bd2-2833-bc62feaaeeb4.png)

信頼されたアクセスは AWS Organizations コンソールのサービスから有効化できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/23656a04-f2c5-0c53-3b5e-c4b9e53b9eda.png)

::: note info
確認メッセージで「(推奨されません)」という文言がありますが、有効化して問題ありません。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/1d613711-16a6-8492-d384-438ca54bbcff.png)

信頼されたアクセスの有効化と無効化の操作は AWS Organizations ではなく、連携する各サービスのコンソールまたは CLI/SDK から実行することが推奨されています。各サービス側で有効化することで信頼されたアクセスの設定だけではなく、サービスで必要なリソース作成等の初期化が行われるためです。

> :warning: **重要**
信頼されたアクセスの有効化と無効化には、信頼されたサービスのコンソールか、その AWS CLI または API のオペレーションのみを使用することを強くお勧めします。これにより、信頼できるアクセスの有効化に必要なすべての初期化処理が信頼できるサービスによって実行可能になります。例えば、必要なリソースの作成や、信頼できるアクセスの無効にする際のリソースのクリーンアップなどです。

https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_integrate_services.html

上記の理由により「(推奨されません)」と表示されますが、AWS Account Management のように一部のサービスは AWS Organizations から有効化する必要があります。

有効化後にアカウントの連絡先情報タブから代替連作先の追加、編集、確認ができるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/535a4f47-718e-aeb1-8ac0-d399dbde59e9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/352fd050-a90b-26ec-31f0-32429da2c2a8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/931213ab-0a03-a18b-07d3-ed86b750b7eb.png)


### 委任された管理者アカウントの設定
AWS Account Management は委任された管理者アカウントを設定可能ですが、2022年5月時点ではコンソールでの設定をサポートしていません。CLI/SDK からのみ設定できます。

```shell-session
$ aws organizations register-delegated-administrator \
    --account-id 123456789012 \
    --service-principal account.amazonaws.com
```

Organizations コンソールで代替連絡先の追加、編集、管理ができるのは組織の管理アカウントのみです。委任された管理者に設定された組織のメンバーアカウントは CLI/SDK のみから操作可能です。

また組織の管理アカウントの代替連絡先は、管理アカウント自身でのみ変更できます。

## 参考
今回はコンソールでの設定を中心に紹介しましたが、CLI での設定方法は以下のアナウンスブログが参考になります。

https://aws.amazon.com/jp/blogs/mt/programmatically-managing-alternate-contacts-on-member-accounts-with-aws-organizations/

公式ドキュメント: AWS Account Management Reference Guide

https://docs.aws.amazon.com/accounts/latest/reference/accounts-welcome.html


以上です。
参考になれば幸いです。