| name | aws-security |
| description | AWS security audit and account information without MCP. Use when the user asks about account info, session details, credential verification, or security posture. |
AWS Security & Account Info / AWS 보안 및 계정 정보
MCP 없이 boto3/CLI로 직접 보안을 관리합니다.
When to Use / 사용 시점
- "현재 AWS 계정 정보" / "Current AWS account info"
- "자격 증명 확인" / "Verify credentials"
- "보안 감사" / "Security audit"
- "리소스 태깅 확인" / "Check resource tagging"
Account & Session Info / 계정 및 세션 정보
aws sts get-caller-identity
aws iam list-account-aliases
aws configure get region
import boto3
sts = boto3.client('sts')
identity = sts.get_caller_identity()
print(f"Account: {identity['Account']}")
print(f"ARN: {identity['Arn']}")
print(f"UserId: {identity['UserId']}")
Security Audit / 보안 감사
IAM Credential Report / IAM 자격 증명 보고서
aws iam generate-credential-report
aws iam get-credential-report --query 'Content' --output text | base64 -d
Access Key Age Check / 액세스 키 경과 확인
iam = boto3.client('iam')
users = iam.list_users()['Users']
for user in users:
keys = iam.list_access_keys(UserName=user['UserName'])['AccessKeyMetadata']
for key in keys:
age = (datetime.now(key['CreateDate'].tzinfo) - key['CreateDate']).days
print(f" {user['UserName']}: {key['AccessKeyId']} ({age} days, {key['Status']})")
MFA Status Check / MFA 상태 확인
for user in iam.list_users()['Users']:
mfa = iam.list_mfa_devices(UserName=user['UserName'])['MFADevices']
status = 'MFA enabled' if mfa else 'NO MFA'
print(f" {user['UserName']}: {status}")
Policy Simulation / 정책 시뮬레이션
iam.simulate_principal_policy(
PolicySourceArn='arn:aws:iam::123456789012:user/testuser',
ActionNames=['s3:GetObject', 's3:PutObject', 'ec2:DescribeInstances'],
ResourceArns=['*']
)
Resource Discovery / 리소스 탐색
Cloud Control API - Any Resource / 모든 리소스 조회
cc = boto3.client('cloudcontrol')
resource_types = [
'AWS::EC2::Instance',
'AWS::EC2::SecurityGroup',
'AWS::S3::Bucket',
'AWS::RDS::DBInstance',
'AWS::Lambda::Function',
'AWS::IAM::Role',
]
for rt in resource_types:
try:
result = cc.list_resources(TypeName=rt)
count = len(result.get('ResourceDescriptions', []))
print(f" {rt}: {count} resources")
except Exception:
pass
Tag Compliance Check / 태그 준수 확인
aws resourcegroupstaggingapi get-resources \
--query 'ResourceTagMappingList[?Tags==`[]`].ResourceARN'
Network Security / 네트워크 보안
aws ec2 describe-security-groups \
--query 'SecurityGroups[?IpPermissions[?IpRanges[?CidrIp==`0.0.0.0/0`]]].{ID:GroupId,Name:GroupName}'
aws ec2 describe-subnets \
--query 'Subnets[?MapPublicIpOnLaunch==`true`].{ID:SubnetId,VPC:VpcId,CIDR:CidrBlock}'
Quick Security Checklist / 빠른 보안 체크리스트
import boto3
def security_audit():
iam = boto3.client('iam')
summary = iam.get_account_summary()['SummaryMap']
print(f"Root MFA: {'YES' if summary['AccountMFAEnabled'] else 'NO'}")
for u in iam.list_users()['Users']:
mfa = iam.list_mfa_devices(UserName=u['UserName'])['MFADevices']
if not mfa:
print(f" No MFA: {u['UserName']}")
from datetime import datetime, timezone
for u in iam.list_users()['Users']:
for k in iam.list_access_keys(UserName=u['UserName'])['AccessKeyMetadata']:
age = (datetime.now(timezone.utc) - k['CreateDate']).days
if age > 90:
print(f" Old key ({age}d): {u['UserName']} - {k['AccessKeyId']}")
for r in iam.list_roles()['Roles']:
last_used = r.get('RoleLastUsed', {}).get('LastUsedDate')
if not last_used:
print(f" Never used role: {r['RoleName']}")
security_audit()