すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:root ユーザーとしてインスタンスにログインしない

最終更新日:Nov 09, 2025

Linux インスタンスを作成するときは、root ユーザーとしてログインしないでください。代わりに、ecs-user ユーザーとしてログインしてください。

セキュリティリスク

root アカウントは、システムで最高の権限を持っています。これにより、システム管理は便利になりますが、重大なセキュリティリスクも生じます。パスワードや Secure Shell Protocol (SSH) キーなどの root アカウントの認証情報が侵害されると、攻撃者はサーバーを完全に制御できるようになります。これにより、次のような事態が発生する可能性があります。

  • データ破壊: 攻撃者は、すべてのビジネスデータ、ログ、バックアップを削除できます。

  • マルウェアのインストール: 攻撃者は、ランサムウェア、マイニングプログラム、バックドアなどのマルウェアをインストールできます。

  • 機密情報の盗難: ビジネスコード、顧客データ、支払い情報などのコア資産が盗まれる可能性があります。

  • ラテラルムーブメント攻撃: 攻撃者はサーバーを踏み台にして、内部ネットワーク内の他のサーバーを攻撃し、広範囲にわたる損害を引き起こす可能性があります。

  • 操作の痕跡の消去: 攻撃者はログファイルを簡単に変更または削除できます。これにより、セキュリティイベント発生後の追跡と調査がはるかに困難になります。

ベストプラクティス

インスタンスを作成するときは、毎日のログインと管理に ecs-user を使用します。これにより、潜在的な攻撃対象領域が制限されます。また、これにより、すべての特権操作が sudo を使用して実行されることが保証されます。これにより、操作の明確で監査可能なレコードが残り、各操作の責任が明確になります。

コンソール

インスタンス購入ページでインスタンスを作成するときは、[ユーザー名][ecs-user] に設定します。

ecs-user ユーザーは、特定のバージョンの Linux イメージでのみサポートされています。お使いのイメージがこのユーザーをサポートしていない場合は、ecs-user ユーザーを作成し、それに sudo 権限を付与する必要があります。詳細については、「複数ユーザーのリモートログイン

API

RunInstances または CreateInstance API 操作を呼び出してインスタンスを作成するときに、ImageOptions.LoginAsNonRoot パラメーターを true に設定できます。このパラメーターを設定すると、インスタンスは root の代わりに ecs-user ユーザー名を使用します。root ユーザー名のパスワードをリセットすることはできません。

キーペアがない場合は、CreateKeyPair API 操作を呼び出して作成できます。

コンプライアンス機能

チェック: root アカウントをログインに使用する Linux インスタンスを検索する

  1. ECS 利用成熟度評価とインサイトに移動します。

  2. [セキュリティ機能] タブを選択します。[root 以外のユーザーとして Linux インスタンスにログイン] チェックをクリックして、root アカウントをログインに使用する Linux インスタンスを表示します。

ブロック: インスタンスの作成などの操作での root アカウントの使用を禁止する

Resource Access Management (RAM) ポリシーを使用して、新しい Linux インスタンスの作成などの操作で root アカウントが使用されないようにブロックできます。ポリシーは、組織またはアカウントレベルで設定できます。

  • エンタープライズユーザーの場合:

    1. Alibaba Cloud アカウントで リソースディレクトリコンソールにログインします。左側のナビゲーションウィンドウで、[コントロールポリシー] をクリックします。カスタムポリシーを作成し、次の JSON コンテンツを貼り付けます。

      このポリシーは、インスタンスの作成、システムディスクのアタッチ、システムディスクの交換などの操作で root ID を使用することを拒否します。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "ecs:RunInstances",
                      "ecs:CreateInstance",
                      "ecs:ReplaceSystemDisk",
                      "ecs:AttachDisk",
                      "ecs:InvokeCommand"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "Bool": {
                          "ecs:LoginAsNonRoot": [
                              "false"
                          ]
                      }
                  },
                  "Effect": "Deny"
              }
          ]
      }
    2. リソースディレクトリで、適切なノードを選択し、ポリシーをアタッチします。ポリシーは、ディレクトリ内のすべてのアカウントに対して指定された操作をブロックします。

  • 非エンタープライズユーザーの場合:

    1. Alibaba Cloud アカウントで RAM コンソールにログインします。左側のナビゲーションウィンドウで、[ポリシー] をクリックします。上記と同じ内容でカスタムポリシーを作成します。

    2. RAM ユーザー、RAM ユーザーグループ、または RAM ロールにポリシーをアタッチして権限を付与します。詳細については、「アクセスポリシーの管理」をご参照ください。

修復: root アカウントのログインを無効にする

  1. 一般ユーザーの作成: SSH ログインに使用する一般ユーザーを作成します。詳細については、「複数ユーザーのリモートログイン」をご参照ください。

  2. インスタンスへのログイン: root ユーザーまたは一般ユーザーとして Linux インスタンスにログインします。

  3. root アカウントのログインを無効にする: インスタンスにログインし、次のスクリプトを実行して SSH サービス構成ファイルを変更します。

    #!/bin/bash
    # 元の構成ファイルをバックアップします
    cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak_$(date +%F)
    
    # root ユーザーの SSH ログインを無効にする: PermitRootLogin パラメーターを no に変更します
    sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
    
    # 構成を有効にするために SSH サービスを再起動します
    # 注: SSH サービス名はディストリビューションによって異なる場合があります (例: sshd または ssh)。必要に応じて変更してください。
    systemctl restart sshd || service sshd restart
  4. 変更の確認: 操作が完了したら、現在のセッションを開いたままにします。新しいターミナルウィンドウを開き、root ユーザーとしてログインを試みます。ログイン試行が失敗することを確認します。次に、一般ユーザーとしてログインを試みます。sudo を使用して正常にログインし、特権コマンドを実行できることを確認します。検証が成功したら、すべてのセッションを安全に切断できます。

    変更を確認した後、チェックの結果がすぐに更新されない場合があります。この遅延は無視してかまいません。