Amazon Web Services ブログ

AWS Config の AWS 管理ポリシー AWSConfigRole に関する変更

2022 年 7 月 5 日に、AWS 管理ポリシー AWSConfigRole は非推奨となります。このポリシーは、よりスコープダウンされたポリシー AWS_ConfigRole に置き換えられます。AWSConfigRole 管理ポリシーは、現在アタッチされているすべての Identity and Access Management (IAM) ユーザー、IAM グループ、および IAM ロールに対して引き続き機能します。ただし、2022 年 7 月 5 日以降、AWSConfigRole 管理ポリシーを新しい IAM ユーザー、IAM グループ、または IAM ロールにアタッチすることはできません。また、このポリシーは、新しくサポートされるリソースタイプおよび新しいマネージドルールに対する権限を含むように更新されないのでご注意ください。

このブログでは、AWSConfigRole ポリシーの使用を特定する方法と、そのポリシーを新しい AWS_ConfigRole ポリシーに置き換える方法について記載します。

このポリシー変更の影響を受けるのはどんな場合ですか?

AWS Config をセットアップするとき、お客様は AWS Config サービスにリンクされたロールを選択するか、独自のロールを作成するかを選択できます。お客様が AWS Config サービスにリンクされたロール AWSServiceRoleForConfig を使用している場合は、今回のポリシー変更に対して追加の対応は必要ありません。理由はサービスにリンクされたロールが AWSConfigRole または AWS_ConfigRole ではない AWS IAM ポリシー を使用するためです。
AWS Config にサービスにリンクされたロールを使用しないことを選択し、AWS Config で使用するための独自のロールを作成した場合、そのロールにアタッチされている IAM ポリシーを確認する必要があります。ロールに AWSConfigRole ポリシーがアタッチされている場合は、そのポリシーをデタッチしてから AWS_ConfigRole をアタッチする必要があります。

レガシーポリシーを使用していて何も対応しないとどうなりますか?

レガシーポリシー (AWSConfigRole) が更新されなくなることにより、新しいリソースタイプはそのポリシーに追加されないため、AWS Config は今後正しく動作しなくなります。その場合、AWS Config はこれらの新しいリソース設定の変更を記録できず、アクセス拒否エラーの生成を開始し、AWS CloudTrail に記録されます。

レガシーポリシーの使用の特定

このセクションでは、AWS Config 高度なクエリを使用してレガシーポリシーを使用しているかどうかを識別する方法について説明します。AWS Config を使用して、単一のアカウントとリージョン、または複数のアカウントとリージョンの設定プロパティに基づいて、AWS リソースの設定を確認できます。AWS Config ではサポートするすべてのリソースについて、現在の AWS リソース状態メタデータに対してプロパティベースのクエリを実行できます。高度なクエリは、単一のクエリエンドポイントと強力なクエリ言語を提供し、サービス固有の API 呼び出しを実行せずにリソースの状態に関するメタデータを取得します。アグリゲータを通じて、複数のアカウントと AWS リージョンにまたがる中央アカウントから同じクエリを実行できます。詳細については、こちらを参照してください。

AWS Config 高度なクエリを実行する手順

  1. アグリゲータをセットアップしたアカウントにログインし、AWS Config サービスコンソールに移動します。アグリゲータがセットアップされたことを確認するには、コンソールの左側のパネルで「アグリゲータ」を選択します。以前に構成したアグリゲータの横にラジオボタンが存在しているはずです。これにより、アグリゲータがセットアップされたことが確認できます。アグリゲータのソースは、アカウントまたは AWS Organizations レベルで設定できることに注意してください。
Figure 1. AWS Config Aggregators

図1. AWS Config アグリゲータ

アグリゲータを設定する必要がある場合は、こちらのドキュメントこちらのブログに記載されている手順に従ってください。

  1. アグリゲータを確認またはセットアップしたので、AWS Config コンソールの左側のパネルで「高度なクエリ」を選択し、「新しいクエリ」を選択し、「新しいクエリ」セクションに以下を貼り付けます。
SELECT
    accountId,
    arn,
    resourceId,
    resourceName,
    resourceType,
    tags,
    configuration.attachedManagedPolicies
WHERE
    resourceType = 'AWS::IAM::Role'
    AND configuration.attachedManagedPolicies.policyName = 'AWSConfigRole'
  1. クエリスコープをアグリゲータ、今回の例では delegatedAdminAccountAggregator に設定しましょう。クエリを実行した際に IAM リソースを確認できるようにするため、ターゲットとするアカウントごとのリージョンの少なくとも 1 つでレコーダーのグローバルリソースが有効になっていることを確認してください。
Figure 2. Running AWS Config Advanced Queries

図 2. AWS Config 高度なクエリを実行

  1. 次に「実行」を選択します。
  2. AWSConfigRole 管理ポリシーが現在 IAM ロールにアタッチされている場合は、IAM ロールのリストが表示されます。このクエリの結果がない場合、追加の対応は不要で、AWSConfigRole 管理ポリシーの非推奨化はお客様に影響を与えません。

AWS Config の新しい IAM ポリシーを実装する

このセクションでは、レガシーポリシーの AWSConfigRole から更新する方法について説明します。AWS Config で使用した元の IAM ロールをデプロイしたときと同じデプロイ方法を使用して、変更することをお勧めします。これから3 つの例を提示いたします。
最初のオプションは、AWS CloudFormation StackSet を使用して AWS Config を最初に設定して有効にした場合に適用できます。そのためには、CloudFormation StackSet を更新して更新をデプロイする必要があります。
2 つ目のオプションは、コンソールから AWS Config を手動で有効にした場合に適用できます。その場合は、AWS IAM コンソールから IAM ロールを更新できます。
3 つ目のオプションは、AWS Control Tower ユーザーの場合に適用できます。この場合、AWS Control Tower のバージョン 2.9 以降を実行していることを確認する必要があります。このオプションでは、AWS Control Tower は AWS Config を更新して、AWSConfigRole または AWS_ConfigRole のいずれも使用しないサービスにリンクされたロールを使用します。
それぞれのシナリオを詳しく見ていきましょう。

シナリオ 1: CloudFormation StackSet を介して更新する

CloudFormation StackSet を使用していて、サービスにリンクされたロールではなくカスタム IAM ロールをセットアップしていた場合は、StackSet テンプレートを更新して新しい IAM 管理ポリシーを使用すれば StackSet によってロールが更新されます。これを行うには、次の手順に従います。

  1. AWS Config の IAM ロールを設定するために CloudFormation StackSet を最初にデプロイしたリージョンと AWS アカウントで、StackSet コンソールに移動します。
  2. AWS Config の IAM ロールをデプロイした StackSet を選択します。
  3. 「テンプレート」タブを選択し、「クリップボードにコピー」を選択します。
  4. 任意のテキストエディタで、StackSet コンソールからコピーした CloudFormation テンプレートを貼り付けます。
  5.  参照先がarn:aws:iam::aws:policy/service-role/awsConfigRole となっている部分を arn:aws:iam::aws:policy/service-role/AWS_ConfigRole に更新します。
  6. 以下は、更新前と更新後のサンプルテンプレートスニペットです。

更新前のテンプレートのサンプル

Resources:
  LegacyConfigRole:
    Type: 'AWS::IAM::Role'
    Properties:
      RoleName: 'ExampleConfigRole'
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - config.amazonaws.com
            Action: - 'sts:AssumeRole'
      Path: /
      ManagedPolicyArns:
        - 'arn:aws:iam::aws:policy/service-role/AWSConfigRole'

更新後のテンプレートのサンプル

Resources: LegacyConfigRole:
  Type: 'AWS::IAM::Role'
  Properties:
    RoleName: 'ExampleConfigRole'
    AssumeRolePolicyDocument:
      Version: '2012-10-17' 
      Statement:
          - Effect: Allow
            Principal:
              Service:
                - config.amazonaws.com
              Action: - 'sts:AssumeRole'
      Path: /
      ManagedPolicyArns:
        - 'arn:aws:iam::aws:policy/service-role/AWS_ConfigRole'
  1. この更新したテンプレートをローカルコンピュータに保存します。
  2. 元の StackSet コンソールに戻り、「アクション」のドロップダウンを選択して「StackSet の詳細を編集」を選択します。
Figure 3. Editing a StackSet

図 3. StackSet の編集

  1. StackSet を更新する「テンプレートの選択」の手順では「既存テンプレートを置き換える」を選択し「テンプレートファイルのアップロード」を選択します。ローカルコンピュータに保存したファイルを選択します。これは、次のスクリーンショットのようになります。その後「次へ」を選択します。
Figure 4. Updating a StackSet Template

図 4. StackSet のテンプレートの更新

  1. StackSet を更新する「StackSet の詳細を指定」と「StackSet オプションの設定」の手順は、オプションやパラメータをそのままにして「次へ」を選択します。
  2. StackSet を更新する「デプロイオプションの設定」のステップでは、設定は組織構造によって異なります。次の例では、組織に 2 つの Organizations Unit (OU) があり、すべてのアカウントがこの 2 つの OU の下にあります。アカウント設定がフラットな構造の場合は「アカウントへのデプロイ」を選択し、アカウント番号のCSVを貼り付けるかアップロードする必要があります。
Figure 6. Attach the updated AWS_ConfigRole policy

図 5. StackSet を OU にデプロイ

  1. 「リージョンの指定」セクションで「全てのリージョンを追加」を選択します。「次へ」を選択して StackSet を更新する次のステップに進みます。
  2. StackSet を更新する「レビュー」ステップで一番下までスクロールし、「AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。」にチェックが入っていることを確認します。次に「送信」を選択します。
  3. StackSet に変更を送信した後、変更がアカウントにプッシュされるまでに数分かかります。所要時間は、所有しているアカウントの数によって異なります。「オペレーション」タブでは、操作の全体的なステータスを監視できます。操作が完了すると、SUCCEEDED のステータスが表示されます。「スタックインスタンス」タブで、各アカウントのスタックインスタンスのステータスを監視することもできます。更新がそのアカウントにプッシュされると、各スタックインスタンスのステータスは CURRENT になります。

シナリオ 2: AWS IAM をコンソール経由で更新する

AWS コンソールで AWS Config を手動で有効化および設定した場合は、このブログで説明した以前の手順を実行して、どの AWS アカウントがレガシーポリシーをまだ使用しているかを判断した後、以下の手順を使用して必要な更新を行うことができます。このアクティビティは、更新する必要がある AWS アカウントごとに実行します。

  1. ポリシーを更新するには IAM コンソールに移動し、左側のパネルの「アクセス管理」の下にある「ロール」を選択します。
  2. 検索フィールドに AWS Config で現在使用しているロールの名前を入力し、「アクセス許可を追加」を選択して「ポリシーをアタッチ」をクリック後、ポリシー名に AWS_ConfigRole を入力し、そのポリシーを選択して、「ポリシーをアタッチ」を選択します。
  3. 次に、コンソールの右側にある × を選択して、古いポリシー AWSConfigRole を削除します。
    これらの更新は、AWS コマンドラインインターフェイス (AWS CLI) または AWS SDK 経由で行うこともできます。
Figure 6. Attach the updated AWS_ConfigRole policy

図 6. AWS_Config ポリシーをアタッチ

シナリオ 3: AWS Control Tower のバージョンを確認して必要に応じて更新する

AWS Control Tower の設定で AWS Config を有効にした場合、AWS Control Tower のランディングゾーンのバージョンがバージョン 2.9 以上であることを確認します。このバージョンのランディングゾーンでは、AWS Config ロールがサービスにリンクされたロールに更新されます。使用しているランディングゾーンのバージョンを確認してアップグレードするには、次の手順に従います。

  1. AWS Control Tower 環境を最初にデプロイしたリージョンと AWS アカウントで、AWS コンソールにログインし、AWS Control Tower ダッシュボードに移動します。
  2. 左側のペインで「アカウント」を選択します。すべてのアカウントが最新のランディングゾーン設定を使用している場合、状態は「登録済み」と表示されます。最新ではないランディングゾーン構成のアカウントがある場合、状態は「更新が利用できます」と表示されます。以下では、2.9 より昔のバージョンのランディングゾーン設定を使用している Custom という名前の OU を含むアカウントの例を示します。
Figure 7. Control Tower Accounts

図 7. Control Tower のアカウント

  1. OU のすべてのアカウントを更新するには「アカウント」テーブルからアップグレードする OU を選択します。上記の場合は Custom を選択します。「組織単位」のページで「アクション」をクリックし「OUを再登録」の順に選択します。
Figure 8. Re-Registering an OU in Control Tower

図 8. Control Tower で OU を再登録

  1. OU 全体を更新するのではなく、各アカウントのランディングゾーン設定を個別に更新する場合は、アカウントを選択して「アカウントの更新」ボタンを選択します。
Figure 9. Updating an Account in Control Tower

図 9. Control Tower でアカウントを更新

ランディングゾーンのバージョンが 2.9 にアップグレード完了すると、AWS Config が使用するロールがサービスにリンクされたロールに更新されます。

まとめ

このブログでは、AWS Config で使用される AWSConfigRole 管理ポリシーの今後の変更について説明し、AWS Config 高度なクエリを使用してこのポリシーが AWS 環境で使用されているかどうかを確認する方法について説明しました。続いて、ポリシーを更新されたバージョンに置き換える方法に3つの方法、以前にデプロイされた StackSet を更新する方法、AWS IAM コンソールから手動で更新する方法、AWS Control Tower ランディングゾーンのバージョンをアップグレードする方法、について説明しました。
今回のポリシー変更は、AWS Config でサービスにリンクされたロール AWSServiceRoleForConfig を使用していないお客様にのみ影響することに注意してください。AWSConfigRole ポリシーを AWS 環境で利用されている場合は、2022 年 7 月 5 日までに更新を行い、マネージドルールの機能が継続していることを確認してください。

 

著者について

Megan O’Neil

Megan はプリンシパルスペシャリストソリューションアーキテクトで、脅威検出やインシデントレスポンス分野に強みがあります。Megan と彼女のチームはお客様に洗練されたスケーラブルでセキュアなソリューションを提供しています。業務外の時間、Megan はサイクリングやスキー、ハイキングといったコロラド散策を行っています。

 

 

Anna McAbee

Anna はセキュリティスペシャリストソリューションアーキテクトで、脅威検出やインシデントレスポンス分野に強みがあります。AWS にジョインする前、彼女は金融業界のセキュリティについての仕事をしていました。業務外の時間では、彼女はフロリダゲーターズのフットボールを応援したり、旅行を楽しんでいます。

 

 

翻訳は SA 桂井が実施しました。原文はこちらです。