SetDefaultPolicyVersion
Event Information
- The SetDefaultPolicyVersion event in AWS for IAM refers to the action of setting a specific policy version as the default version for a particular IAM policy.
- When this event occurs, it means that the default version of the policy has been updated, and any new IAM roles or users that are assigned this policy will automatically use the newly set default version.
- This event is useful for managing and controlling the access and permissions of IAM entities, as it allows for the easy management of policy versions and ensures that the most up-to-date version is being used by default.
Examples
-
Unauthorized access: If the SetDefaultPolicyVersion operation is misconfigured or misused, it can potentially grant unauthorized access to resources within the AWS account. This can lead to data breaches, unauthorized modifications, or other security incidents.
-
Privilege escalation: If an attacker gains access to an IAM user or role with permissions to modify the default policy version, they can potentially escalate their privileges by modifying the policy to grant themselves additional permissions. This can result in unauthorized access to sensitive resources or actions within the AWS account.
-
Policy misconfiguration: If the default policy version is set incorrectly or without proper consideration of security best practices, it can lead to policy misconfigurations. These misconfigurations can inadvertently grant excessive permissions to users or roles, increasing the attack surface and potentially compromising the security of the AWS account.
Remediation
Using Console
-
Example 1: Enforce strong password policy for IAM users
- Step 1: Login to the AWS Management Console.
- Step 2: Go to the IAM service.
- Step 3: Click on “Account settings” in the left navigation pane.
- Step 4: Under the “Password policy” section, click on “Edit”.
- Step 5: Enable the “Require at least one uppercase letter” option.
- Step 6: Enable the “Require at least one lowercase letter” option.
- Step 7: Enable the “Require at least one number” option.
- Step 8: Enable the “Require at least one non-alphanumeric character” option.
- Step 9: Set the “Minimum password length” to an appropriate value.
- Step 10: Click on “Apply password policy”.
-
Example 2: Enable multi-factor authentication (MFA) for IAM users
- Step 1: Login to the AWS Management Console.
- Step 2: Go to the IAM service.
- Step 3: Click on “Users” in the left navigation pane.
- Step 4: Select the IAM user for which you want to enable MFA.
- Step 5: Click on the “Security credentials” tab.
- Step 6: Under the “Multi-factor authentication (MFA)” section, click on “Manage”.
- Step 7: Click on “Activate MFA”.
- Step 8: Choose the appropriate MFA device option (e.g., virtual MFA device, hardware MFA device).
- Step 9: Follow the on-screen instructions to set up the MFA device.
- Step 10: Click on “Assign MFA”.
-
Example 3: Enable AWS CloudTrail for logging IAM events
- Step 1: Login to the AWS Management Console.
- Step 2: Go to the CloudTrail service.
- Step 3: Click on “Trails” in the left navigation pane.
- Step 4: Click on “Create trail”.
- Step 5: Provide a name for the trail and choose the appropriate settings (e.g., log file validation, S3 bucket for storing logs).
- Step 6: Under the “Management events” section, enable logging for IAM events.
- Step 7: Click on “Create”.
- Step 8: Once the trail is created, go to the IAM service.
- Step 9: Click on “Policies” in the left navigation pane.
- Step 10: Create a new IAM policy that allows the necessary CloudTrail actions and attach it to the IAM users or groups that require access to CloudTrail logs.
Using CLI
-
Ensure IAM users have strong passwords:
- Use the
update-login-profile
command to set a strong password for an IAM user:
- Use the
-
Enable multi-factor authentication (MFA) for IAM users:
- Use the
enable-mfa-device
command to enable MFA for an IAM user:
- Use the
-
Remove unnecessary IAM access keys:
- Use the
delete-access-key
command to delete an IAM access key:
- Use the
Using Python
-
Ensure IAM users have strong passwords:
- Use the
boto3
library in Python to retrieve a list of IAM users. - For each user, check if their password meets the desired complexity requirements (e.g., minimum length, use of uppercase, lowercase, numbers, and special characters).
- If a user’s password does not meet the requirements, use the
update_login_profile
method to update the user’s password with a randomly generated strong password.
- Use the
-
Enable multi-factor authentication (MFA) for IAM users:
- Use the
boto3
library in Python to retrieve a list of IAM users. - For each user, check if MFA is already enabled. If not, use the
enable_mfa
method to enable MFA for the user.
- Use the
-
Remove unused IAM access keys:
- Use the
boto3
library in Python to retrieve a list of IAM users. - For each user, check if they have any access keys that are not used recently.
- If an access key is not used recently, use the
delete_access_key
method to delete the access key.
- Use the