SDLC(软件开发生命周期,Software Development Life Cycle)是指软件开发过程中涉及的一系列步骤和阶段。每个阶段都有特定的活动和产出,旨在确保软件项目按时、高质量地交付。典型的SDLC阶段包括:
不同的软件开发方法(如瀑布模型、敏捷开发、DevOps)可能会有不同的阶段和流程,但核心的SDLC概念在大多数方法中都是一致的。
DevOps是一种结合了软件开发(Development)和IT运维(Operations)的实践和文化,旨在通过更紧密的协作和自动化工具来提高软件交付速度和质量。DevOps的核心理念包括以下几个方面:
为了实现这些目标,DevOps使用一系列工具来自动化和简化流程,包括但不限于:
CREATE_UPDATE
和DELETE_ONLY
动作进行test环境的发布和删除,以及prod环境的真正发布支持的环境:各种预设的代码环境,以及DockerImage
通过CodeBuild Service Role的设置,对AWS中其他服务享有access权限
使用Github Actions其实是一样的原理,可以多不同的stage编写不同的yml文件进行Pipeline编写,比如build.yml,test.yml,deploy.yml文件在不同的on条件下触发
Build Badges:在build之后,进行PR的时候,会显示一个彩色的标识,提示是否通过了build的stage,并且有链接,可以供代码审查者通过链接查看build的历史记录(可以存在于branch level)
codeguru_profiler_agent
(添加到zip文件或者layer)和@with_lambda_profiler
被集成到Lambda function(也可以直接在lambda function的configuration中enable profiling功能)创建动态数量的资源使用Macros&Transform
!Ref
语法指示 / 可以指定输入类型等 / 有一些Pseudo变量可以直接使用,比如AccountId,Region,StackId等!FindInMap [RegionMap, !Ref "AWS::Region", HVM64]
Export
- !ImportValue
!Ref
,!GetAtt
,!ImportValue
,!Base64
,conditions:!And
,!Equals
,!If
,!Not
,!Or
ContinueUpdateRollbackAPI
重新进行rollback操作iam:PassRole
PolicyCAPABILITY_NAMED_IAM
(特定IAM资源),和CAPABILITY_IAM
:在CF需要创建和更新一些IAM资源的时候需要的enable功能CAPABILITY_AUTO_EXPAND
:当需要进行动态转换(dynamic transformation)的时候,如使用macros或者nested stacks的时候InsufficientCapabilitiesException
DeletionPolicy: Delete
,当stack被删除,资源也会被删除,但是当S3bucket不为空的情况下可能不会删除资源DeletionPolicy: Retain
,设置在resource中,特定哪些资源在stack被删除后也继续留存DeletionPolicy: Snapshot
,针对可以snapshot的资源,该设置会留存资源的snapshotManageMasterUserPassword
为true,RDS会自动管理用户密码(在secret manager中)的创建和rotation
!GetAtt MyCluster.MasterUserSecret.SecretArn
AWS::SecretsManager::Secret
:自动生成密码存储至SecretManagerAWS::RDS::DBInstance
:创建RDS,通过resolve语法指向创建的secretsAWS::SecretsManager::SecretTargetAttachment
:将上述二者关联,自动化rotationFn::Base64 |
AWS::CloudFormation::Init
:cfn-init实质是一个命令,在原本的user-data执行的地方,执行该命令,然后在metadata的block中明确记录init的详细内容,详细看一下具体脚本即可:dev-ops/aws/code_v2024-07-29/cloudformation/from-sysops-course/1-cfn-init.yaml!Ref
或者!GetAtt
的时候,内部默认有前后依赖关系AWSCloudFormationStackSetAdministrationRole
对target账户赋予AWSCloudFormationStackSetExcutionRole
cdk bootstrap
,需要在各个region和account启动cdk应用编译代码cdk synth
,这会返回被编译的CloudFormation的Yaml代码cdk deploy
,将编译的代码通过CloudFormation进行部署cdk destory
,销毁stack通过自动化管理,降低instance cost,自动化创建 AMI
lanch的新的EC2,比如已经安装了SSM Agent的AmazonLinux2的EC2,会直接出现在SSM的Fleet Manager中,作为一个舰队进行管理。
Run Command功能是直接跑一个小的命令或者跑一个脚本(document=script),通过resource groups可以直接跑一个server集群,它和IAM还有CloudTrail集成,会被记录,不需要通过ssh连接EC2(而是通过SSM Agent,session manager也是通过Agent),可以控制执行速率rate(一次执行多少,或几个server),和错误控制(几个错误就停止之类),跑命令的结果可以在console表示也可以发送到S3或者CWLogs,可以给SNS发消息,也可以被EventBridge Trigger,甚至可以得到一个生成的 CLI 代码自己拿去控制台执行。
"Action": "ssm:StartSession"
DHMC: System Manager: Default Host Management Configuration:提供一个集中化的界面来管理和配置 instances 的默认设置,简化了配置过程,不需要 EC2 instance Profile,EC2 Role 是 Instance Identity Role
os.getenv("key")
),可以存储secrets,使用KMS或CMK加密${stageVariables.variableName}
${stageVariables.variableName}
指定的stage name和function的aliase同名即可ECS Task Networking:None,host(使用底层host的interface),bridge(虚拟网络),awsvpc(使用自己的ENI和私有IP)
无需管理服务器,只需要定义task definitions
logConfiguration
parameters/etc/ecs/ecs.config
的ECS_AVAILABLE_LOGGING_DRIVERS
/var/log/containers
,使用CloudWatch Agent发送日志,CloudWatch Container Insights进行仪表盘监控必须要有稳定的AWS Region连接
参照Data Engineer部分的Kinesis全部内容!和devops的内容基本一致
也可参考高级网络笔记,这里只记录重点记忆点!
储存中加密使用KMS,传输中加密为SSL
Data Engineer 中记录的更详细!这里关注devops的重点!
预置 Provisiond Mode & 按需 On-Demand Mode:预置模式也可以设置 Auto Scaling 的上下限 capacity 容量
TTL:必须使用number类型Unix Epoch timestamp作为TTL的时间属性,它实质上是要手动创建了一个新的属性,然后设定开启该功能,内部会定期扫描你设置的TTL属性列(column),取得要删除的数据,进行删除操作,它不会消耗WCU
Composite Alarm:一般的alarm只能有单一metric指标,composite alarm可以监控其他alarm,使用AND/OR等逻辑表达式,达到复合指标监控功能,减少 alarm noise
$.detail.instance-id
集成 EventBrideg,将所有的events都发送到EventBridge,就可以发挥更强的功能,下游可以驱动的服务也更多,并且可以同时驱动很多服务
参考安全专家内容
X-ray agent或者service需要相关的 IAM permission(IAM ROLE) 来访问 X-ray 服务
全部服务参照安全专家,包括如下重点服务:这里只记录自我简单总结
实质上它背后的违规比较,应该是基于IaC的底层代码,它驱动的修补程序,也就是System Manager则是一种疏结合,System Manager中跑的Document,实质也是一种IaC基础设施重新部署
它的Configuration Recoder功能,实质用的是CloudFormation StackSet功能记录了一个时间点的资源配置,该配置可以被用于各个account的资源设置
Aggregator用于整合各个账户的config数据,到一个账户,如果是OU设置下的不需要各个账户设置,如果不是OU则需要被整合的账户授权。只用于整合数据,不用于统一设置,如果要给各个账户统一设置,使用CloudFormation StackSets。
Conformance Pack也是一种Yaml文件,是一组Config Rule和Remeddiation actions的合集,实质也是IaC,CloudFormation of the Config Rules!因此它可以用Codepipeline和CloudFormation进行自动化部署
External IdP(外部身份提供者)指的是一个管理用户身份和认证的第三方服务。例如,Google、Microsoft Azure Active Directory(AD)和Okta等都是常见的身份提供者,它们可以帮助组织管理用户身份和访问权限,而不需要组织自己维护所有的用户账户信息。
在AWS(Amazon Web Services)中,AWS Identity Center(之前称为AWS Single Sign-On,SSO)支持与外部身份提供者集成,以实现统一的身份管理和单点登录。以下是AWS Identity Center如何为外部身份提供者认证的基本流程:
配置身份提供者:首先,你需要在AWS Identity Center中配置外部身份提供者的连接。这通常包括输入外部身份提供者的相关信息,如其元数据文件、SAML端点URL等。
设置SAML(安全断言标记语言)或OIDC(开放ID连接):AWS Identity Center支持通过SAML 2.0或OIDC协议与外部身份提供者进行集成。这些协议使得AWS Identity Center能够与外部身份提供者交换认证信息。
用户登录:当用户尝试访问AWS服务时,他们会被重定向到外部身份提供者进行认证。这是通过SAML或OIDC协议的单点登录(SSO)实现的。
身份验证:用户在外部身份提供者那里输入凭据并完成认证后,外部身份提供者会生成一个认证令牌或断言,并将其发送回AWS Identity Center。
获取访问权限:AWS Identity Center解析认证断言或令牌,验证用户的身份,并根据预配置的访问权限授予用户对AWS资源的访问权限。
单点登录:一旦认证通过,用户可以无缝访问AWS资源,无需再次登录。
这种集成的主要好处是简化了用户管理和访问控制,同时确保了统一的身份认证和安全策略。如果组织已经使用了外部身份提供者进行身份管理,通过AWS Identity Center集成可以大大提高效率,并确保一致的用户体验。
注意!GuardDuty对于DNSlogs的解析,只针对default VPC DNS resolver。其他的不出finding结果。
Multi-region跨区复制功能,用于灾难恢复,跨区DB和跨区应用等:Primary - Read Replica