WEBVTT

1
00:00:00.160 --> 00:00:04.120
<v Speaker 1>Welcome to a deep dive into serverlest security. We've got

2
00:00:04.480 --> 00:00:07.400
<v Speaker 1>quite a stack of resources this time, including excerpts from

3
00:00:07.440 --> 00:00:11.679
<v Speaker 1>the book serverlest Security, Understand, Assess, and Implement Secure in

4
00:00:11.759 --> 00:00:14.800
<v Speaker 1>Time by miguel A. Collis. So today we're going to

5
00:00:14.800 --> 00:00:18.160
<v Speaker 1>try to extract the essential nuggets and help you get

6
00:00:18.199 --> 00:00:19.760
<v Speaker 1>up to speed on serverlest security.

7
00:00:19.879 --> 00:00:23.239
<v Speaker 2>Yeah, we're gonna be looking at what makes serverlest security unique,

8
00:00:23.559 --> 00:00:26.559
<v Speaker 2>how to think about risk, and the practical steps you

9
00:00:26.600 --> 00:00:28.160
<v Speaker 2>can take to protect your applications.

10
00:00:28.399 --> 00:00:32.679
<v Speaker 1>It's interesting how serverleists can work with any cloud model, right, private, public,

11
00:00:32.880 --> 00:00:35.679
<v Speaker 1>or even a hybrid setup. But you know, the book

12
00:00:35.679 --> 00:00:38.439
<v Speaker 1>makes it very clear that regardless of the model, threats exist.

13
00:00:38.759 --> 00:00:41.759
<v Speaker 1>Why focus on serverleist security specifically, It seems like these

14
00:00:41.799 --> 00:00:44.119
<v Speaker 1>platforms already have some security built in.

15
00:00:44.560 --> 00:00:47.560
<v Speaker 2>You're right, they do come with some inherent security features,

16
00:00:47.840 --> 00:00:51.320
<v Speaker 2>but it's a shared responsibility model. The provider takes care

17
00:00:51.359 --> 00:00:54.079
<v Speaker 2>of the underlying infrastructure, but you're in charge of securing

18
00:00:54.159 --> 00:00:56.719
<v Speaker 2>your apps and your data. And server list brings its

19
00:00:56.759 --> 00:00:58.560
<v Speaker 2>own unique set of security challenges.

20
00:00:58.880 --> 00:01:02.880
<v Speaker 1>Okay, I'm all ears, let's unpack these unique challenges. The

21
00:01:02.880 --> 00:01:05.519
<v Speaker 1>next part of the book focuses on understanding the application

22
00:01:05.599 --> 00:01:09.680
<v Speaker 1>you're trying to secure. It's like know your enemy right exactly.

23
00:01:10.560 --> 00:01:14.480
<v Speaker 2>Every serverless application is unique, so it needs a tailored

24
00:01:14.480 --> 00:01:18.159
<v Speaker 2>security approach. The book recommends starting with a good old

25
00:01:18.200 --> 00:01:22.920
<v Speaker 2>fashioned documentation review. Architecture diagrams are key. They're like blueprints,

26
00:01:23.159 --> 00:01:26.400
<v Speaker 2>mapping out your applications components and how they interact, giving

27
00:01:26.439 --> 00:01:27.719
<v Speaker 2>you a visual guide, so.

28
00:01:27.719 --> 00:01:30.799
<v Speaker 1>Getting a bird's eye view of the application landscape precisely.

29
00:01:31.400 --> 00:01:33.920
<v Speaker 2>Then we move on to source code review. This is

30
00:01:33.920 --> 00:01:36.079
<v Speaker 2>where you get your hands storty, looking at the functions,

31
00:01:36.159 --> 00:01:39.159
<v Speaker 2>run time engines, and event triggers that make up your application.

32
00:01:39.680 --> 00:01:43.000
<v Speaker 2>By understanding the code, you can spot vulnerabilities, things like

33
00:01:43.079 --> 00:01:45.879
<v Speaker 2>insecure coding practices or risky dependencies.

34
00:01:46.120 --> 00:01:47.599
<v Speaker 1>This is where we roll up our sleeves and get

35
00:01:47.599 --> 00:01:50.079
<v Speaker 1>into the nuts and bolts. What about system accounts? The

36
00:01:50.120 --> 00:01:51.319
<v Speaker 1>book mentioned those right.

37
00:01:51.359 --> 00:01:54.599
<v Speaker 2>System account review is critical. You're looking for threats both

38
00:01:54.640 --> 00:01:58.120
<v Speaker 2>from the outside and the inside. By analyzing user accounts, permissions,

39
00:01:58.120 --> 00:02:01.000
<v Speaker 2>and access controls. We want to make sure that only

40
00:02:01.000 --> 00:02:05.319
<v Speaker 2>the right people can access sensitive resources. Got it, locking

41
00:02:05.359 --> 00:02:08.000
<v Speaker 2>things down, making sure the right people have the right access.

42
00:02:08.919 --> 00:02:12.039
<v Speaker 2>But this next part is interesting. The book actually suggests

43
00:02:12.159 --> 00:02:15.919
<v Speaker 2>using the application to understand its security hands on approach.

44
00:02:16.159 --> 00:02:16.520
<v Speaker 2>I like it.

45
00:02:16.719 --> 00:02:18.919
<v Speaker 1>H By actually using the app, you can see its

46
00:02:18.919 --> 00:02:21.680
<v Speaker 1>network traffic in real time. You see how data is

47
00:02:21.719 --> 00:02:24.879
<v Speaker 1>transmitted and identify any red flags. Think of it as

48
00:02:24.879 --> 00:02:26.120
<v Speaker 1>a security test drive.

49
00:02:26.400 --> 00:02:30.000
<v Speaker 2>I love it. We've got the application blueprint from the documentation,

50
00:02:30.280 --> 00:02:32.560
<v Speaker 2>we've looked under the hood with the source code, and

51
00:02:32.560 --> 00:02:35.360
<v Speaker 2>we've taken it for a security test drive. Now let's

52
00:02:35.400 --> 00:02:36.199
<v Speaker 2>talk threats.

53
00:02:36.560 --> 00:02:40.000
<v Speaker 1>Okay, but first we've got to define the security enclave,

54
00:02:40.280 --> 00:02:43.520
<v Speaker 1>sometimes called the trust boundary. It's like drawing a line

55
00:02:43.560 --> 00:02:46.400
<v Speaker 1>around the parts of your application that you're responsible for securing.

56
00:02:47.000 --> 00:02:49.719
<v Speaker 1>Anything outside that line might have different security needs or

57
00:02:49.759 --> 00:02:51.000
<v Speaker 1>be managed by someone else.

58
00:02:51.120 --> 00:02:55.199
<v Speaker 2>Okay, establishing the defensive perimeter exactly. Now, about those threats.

59
00:02:55.840 --> 00:03:00.240
<v Speaker 2>The FBI's Internet Crime Complaint Center or IC three, they've

60
00:03:00.240 --> 00:03:03.360
<v Speaker 2>seen a huge increase in Internet crime costs, going from

61
00:03:03.360 --> 00:03:05.520
<v Speaker 2>five hundred and eighty one point four million dollars in

62
00:03:05.520 --> 00:03:08.800
<v Speaker 2>twenty twelve to a whopping two point seven billion dollars

63
00:03:08.840 --> 00:03:12.520
<v Speaker 2>in twenty eighteen. And you know, serverless applications, with all

64
00:03:12.520 --> 00:03:15.439
<v Speaker 2>their moving parts and reliance on other services they could

65
00:03:15.439 --> 00:03:16.319
<v Speaker 2>be attempting target.

66
00:03:16.520 --> 00:03:19.120
<v Speaker 1>Those numbers are scary, So who are we up against?

67
00:03:19.360 --> 00:03:22.400
<v Speaker 1>The book mentions script kitties, who are they? And should

68
00:03:22.439 --> 00:03:23.120
<v Speaker 1>we be worried?

69
00:03:23.400 --> 00:03:26.719
<v Speaker 2>Script kitties are individuals, usually with limited skills, who use

70
00:03:26.759 --> 00:03:29.599
<v Speaker 2>pre made tools and scripts to launch attacks. They're mostly

71
00:03:29.680 --> 00:03:33.120
<v Speaker 2>driven by curiosity, maybe a desire to cause little chaos.

72
00:03:33.520 --> 00:03:36.759
<v Speaker 2>Think of them as like digital graffiti artists. Annoying but

73
00:03:36.840 --> 00:03:38.599
<v Speaker 2>not super sophisticated, so.

74
00:03:38.680 --> 00:03:40.479
<v Speaker 1>More of a nuisance than a serious threat.

75
00:03:40.759 --> 00:03:43.599
<v Speaker 2>Yeah. Generally, basic security hygiene like keeping your systems up

76
00:03:43.599 --> 00:03:46.280
<v Speaker 2>to date and using firewalls can usually keep them away.

77
00:03:46.599 --> 00:03:48.919
<v Speaker 1>Good to know. What about cybercriminals? They sound much more

78
00:03:48.960 --> 00:03:49.879
<v Speaker 1>formidable they are.

79
00:03:50.039 --> 00:03:54.520
<v Speaker 2>Cybercriminals are motivated by profit, plan and simple. They use malware, phishing, scams,

80
00:03:54.560 --> 00:03:58.199
<v Speaker 2>social engineering, all kinds of tactics to steal data, compromise systems,

81
00:03:58.240 --> 00:03:59.199
<v Speaker 2>basically make money.

82
00:03:59.240 --> 00:04:00.919
<v Speaker 1>These are the pro the ones who really know what

83
00:04:00.919 --> 00:04:02.560
<v Speaker 1>they're doing exactly.

84
00:04:02.439 --> 00:04:05.680
<v Speaker 2>And they're constantly evolving. Defending against them takes a multi

85
00:04:05.759 --> 00:04:11.400
<v Speaker 2>layered approach, strong authentication, intrusion detection systems, security audits, you

86
00:04:11.520 --> 00:04:13.280
<v Speaker 2>name it. It's a constant battle.

87
00:04:13.560 --> 00:04:16.120
<v Speaker 1>Sounds like we need to stay agile to stay ahead.

88
00:04:17.000 --> 00:04:22.040
<v Speaker 1>The book also mentions activists, how are they different activists.

89
00:04:21.439 --> 00:04:26.160
<v Speaker 2>Are groups sometimes individuals, driven by a cause or an ideology.

90
00:04:26.439 --> 00:04:29.439
<v Speaker 2>They might target organizations or governments they don't agree with,

91
00:04:29.800 --> 00:04:34.120
<v Speaker 2>to facing websites, leaking information, disrupting operations, that kind of thing.

92
00:04:34.199 --> 00:04:37.959
<v Speaker 1>Hacking with a purpose. Their motives seem unpredictable, which makes

93
00:04:37.959 --> 00:04:39.279
<v Speaker 1>them harder to anticipate.

94
00:04:39.519 --> 00:04:41.920
<v Speaker 2>Yeah, their motivations can make them tough to defend against.

95
00:04:42.399 --> 00:04:45.519
<v Speaker 2>They might not care about financial loss or legal consequences.

96
00:04:46.040 --> 00:04:49.040
<v Speaker 2>To mitigate this risk, you really need to understand their

97
00:04:49.079 --> 00:04:50.959
<v Speaker 2>ideology who they might target.

98
00:04:51.199 --> 00:04:54.680
<v Speaker 1>So we've got curious kids, criminals after money, and activists

99
00:04:54.720 --> 00:04:57.800
<v Speaker 1>with an agenda. Is there anyone else lurking around that

100
00:04:57.839 --> 00:04:58.920
<v Speaker 1>we need to worry about?

101
00:04:59.199 --> 00:05:04.360
<v Speaker 2>Unfortunately? Yeah, yes, state sponsored attackers. These groups have backing

102
00:05:04.399 --> 00:05:08.480
<v Speaker 2>from governments, and they often have significant resources and very

103
00:05:08.480 --> 00:05:13.800
<v Speaker 2>advanced techniques. They might go after critical infrastructure, steal intellectual property,

104
00:05:13.920 --> 00:05:15.240
<v Speaker 2>or conduct espionage.

105
00:05:15.399 --> 00:05:17.920
<v Speaker 1>Wow, the heavy hitters of the cyber world.

106
00:05:18.120 --> 00:05:22.279
<v Speaker 2>That's right. Defending against these guys takes proactive threat intelligence

107
00:05:22.480 --> 00:05:25.800
<v Speaker 2>and advanced security measures. You've got to be one step ahead.

108
00:05:25.560 --> 00:05:29.920
<v Speaker 1>Constantly monitoring the threat landscape, trying to anticipate their moves.

109
00:05:30.360 --> 00:05:32.839
<v Speaker 1>Any other threats we need to consider don't forget.

110
00:05:32.680 --> 00:05:35.639
<v Speaker 2>About insider threats. These can be current employees or even

111
00:05:35.680 --> 00:05:40.360
<v Speaker 2>former employees, contractors, partners, anyone with legitimate access to your systems,

112
00:05:40.839 --> 00:05:45.240
<v Speaker 2>but they misuse that access, either intentionally or unintentionally, like

113
00:05:45.319 --> 00:05:47.959
<v Speaker 2>stealing data or accidentally leaking information.

114
00:05:48.120 --> 00:05:49.959
<v Speaker 1>The wolf in sheep's clothing exactly.

115
00:05:50.360 --> 00:05:53.079
<v Speaker 2>They often have a deep understanding of your systems in security,

116
00:05:53.240 --> 00:05:54.879
<v Speaker 2>which makes them especially dangerous.

117
00:05:55.199 --> 00:05:57.600
<v Speaker 1>This threat landscape is pretty intense. So where do we

118
00:05:57.639 --> 00:06:00.360
<v Speaker 1>even begin to assess all these risks and feel a

119
00:06:00.360 --> 00:06:01.240
<v Speaker 1>little overwhelmed.

120
00:06:01.360 --> 00:06:04.279
<v Speaker 2>That's where a risk assessment comes in. It's a systematic

121
00:06:04.319 --> 00:06:07.879
<v Speaker 2>way to identify potential threats, figure out how likely they

122
00:06:07.879 --> 00:06:10.000
<v Speaker 2>are to happen and what their impact could be, and

123
00:06:10.040 --> 00:06:12.040
<v Speaker 2>then come up with the right mitigation strategies.

124
00:06:12.120 --> 00:06:15.959
<v Speaker 1>Okay, so we're bringing some order to the chaos, prioritizing

125
00:06:15.959 --> 00:06:18.920
<v Speaker 1>our efforts based on a clear understanding of the risks.

126
00:06:19.160 --> 00:06:22.399
<v Speaker 2>Right. The book suggests using a risk assessment table. It's

127
00:06:22.439 --> 00:06:26.680
<v Speaker 2>simple but effective. You list your assets, the threats they face,

128
00:06:26.879 --> 00:06:30.360
<v Speaker 2>the likelihood of those threats actually happening, their impact, and

129
00:06:30.360 --> 00:06:31.480
<v Speaker 2>what you can do to mitigate them.

130
00:06:31.519 --> 00:06:33.639
<v Speaker 1>Can you give me a simplified example just to see

131
00:06:33.639 --> 00:06:34.120
<v Speaker 1>this in action.

132
00:06:34.279 --> 00:06:37.439
<v Speaker 2>Sure. Let's say one of your assets is accounts. One

133
00:06:37.480 --> 00:06:41.279
<v Speaker 2>potential threat would be account hijacking, where someone gains unauthorized

134
00:06:41.319 --> 00:06:45.279
<v Speaker 2>access to your cloud provider account. Now, thinking about how

135
00:06:45.319 --> 00:06:48.000
<v Speaker 2>advanced cyber attacks are these days, we could say the

136
00:06:48.079 --> 00:06:50.680
<v Speaker 2>likelihood of this happening is probable.

137
00:06:50.240 --> 00:06:53.160
<v Speaker 1>And the impact if we've got strong security measures in

138
00:06:53.160 --> 00:06:56.319
<v Speaker 1>place for our accounts, the impact could be minor.

139
00:06:56.120 --> 00:06:59.279
<v Speaker 2>Right, But without those measures, the impact could be catastrophic.

140
00:07:00.000 --> 00:07:02.279
<v Speaker 2>Imagine losing control of your entire cloud setup.

141
00:07:02.399 --> 00:07:04.399
<v Speaker 1>I definitely don't want to think about that. So how

142
00:07:04.399 --> 00:07:05.600
<v Speaker 1>do we mitigate that risk?

143
00:07:05.920 --> 00:07:09.600
<v Speaker 2>The most effective mitigation would be multi factor authentication MFA.

144
00:07:10.000 --> 00:07:12.480
<v Speaker 2>It adds an extra layer of security, making a lot

145
00:07:12.519 --> 00:07:14.639
<v Speaker 2>harder for attackers to get in, even if they do

146
00:07:14.759 --> 00:07:15.839
<v Speaker 2>manage to get your password.

147
00:07:15.959 --> 00:07:18.040
<v Speaker 1>Right, MFA the security superhero.

148
00:07:18.160 --> 00:07:21.199
<v Speaker 2>You got it? And you do this same process for

149
00:07:21.360 --> 00:07:24.839
<v Speaker 2>each asset and each potential threat, building a complete picture

150
00:07:24.879 --> 00:07:28.519
<v Speaker 2>of your risks. This lets you prioritize your security efforts effectively.

151
00:07:28.680 --> 00:07:31.759
<v Speaker 1>Okay, I like how organized and visual that is. Now.

152
00:07:31.800 --> 00:07:35.040
<v Speaker 1>The book also mentions a risk matrix. What is that

153
00:07:35.160 --> 00:07:37.759
<v Speaker 1>exactly and how is it different from the risk assessment table?

154
00:07:38.199 --> 00:07:41.079
<v Speaker 2>A risk matrix combines how likely a threat is to

155
00:07:41.120 --> 00:07:43.639
<v Speaker 2>occur with its impact, and that gives you an overall

156
00:07:43.720 --> 00:07:47.000
<v Speaker 2>risk level. So something that's unlikely but would be devastating

157
00:07:47.040 --> 00:07:49.279
<v Speaker 2>if it did happen might still need your attention.

158
00:07:49.439 --> 00:07:52.439
<v Speaker 1>So not just looking at the probability, but also the

159
00:07:52.480 --> 00:07:54.879
<v Speaker 1>potential fallout. It's a more holistic approach.

160
00:07:55.079 --> 00:07:58.399
<v Speaker 2>You got it. It's a powerful tool for making informed

161
00:07:58.399 --> 00:08:02.160
<v Speaker 2>security decisions, helping prioritize your efforts based on a combination

162
00:08:02.199 --> 00:08:05.959
<v Speaker 2>of factors. Okay, we've mapped out our application, We've identified

163
00:08:06.000 --> 00:08:09.199
<v Speaker 2>the bad guys, we've assessed the risks. Where do we

164
00:08:09.240 --> 00:08:12.160
<v Speaker 2>go from here on our serverlest security journey?

165
00:08:12.480 --> 00:08:14.600
<v Speaker 1>Now it's time to dive into the code itself and

166
00:08:14.639 --> 00:08:17.360
<v Speaker 1>secure the very heart of your serverless application.

167
00:08:17.560 --> 00:08:19.879
<v Speaker 2>This is where it gets interesting. I know code is

168
00:08:19.920 --> 00:08:23.120
<v Speaker 2>often where vulnerabilities hide. What's the first thing we need

169
00:08:23.160 --> 00:08:25.120
<v Speaker 2>to think about when it comes to securing.

170
00:08:24.680 --> 00:08:28.079
<v Speaker 1>Our code choosing the right run time engine and its version.

171
00:08:28.560 --> 00:08:32.120
<v Speaker 1>That's the environment where your functions run. For instance, with

172
00:08:32.200 --> 00:08:36.159
<v Speaker 1>AWS Lambda you have options like no JS, Python, Java,

173
00:08:36.320 --> 00:08:36.840
<v Speaker 1>and so on.

174
00:08:37.200 --> 00:08:39.879
<v Speaker 2>Wait, so the choice of environment affects security. I hadn't

175
00:08:39.879 --> 00:08:40.440
<v Speaker 2>thought about that.

176
00:08:40.519 --> 00:08:44.440
<v Speaker 1>Oh, it definitely does. Different runtime engines have different security profiles.

177
00:08:44.639 --> 00:08:47.840
<v Speaker 1>Some are more mature with fewer known vulnerabilities, while others

178
00:08:47.879 --> 00:08:50.200
<v Speaker 1>are newer and might still be a bit rough around

179
00:08:50.240 --> 00:08:50.639
<v Speaker 1>the edges.

180
00:08:50.879 --> 00:08:53.759
<v Speaker 2>So how do we pick the right one? From a security.

181
00:08:53.279 --> 00:08:57.080
<v Speaker 1>Perspective, do your research? Websites like cve details keep track

182
00:08:57.120 --> 00:09:00.600
<v Speaker 1>of common vulnerabilities and exposures known as cvees. You can

183
00:09:00.639 --> 00:09:03.559
<v Speaker 1>search for a specific runtime engine and version and see

184
00:09:03.559 --> 00:09:06.639
<v Speaker 1>its track record how many vulnerabilities have been reported, so

185
00:09:06.720 --> 00:09:09.879
<v Speaker 1>it's like a security report card for different runtime engines.

186
00:09:10.399 --> 00:09:12.720
<v Speaker 2>You could say that the book has a great suggestion

187
00:09:13.360 --> 00:09:16.000
<v Speaker 2>use a bar chart to compare the number of cvees

188
00:09:16.159 --> 00:09:19.480
<v Speaker 2>across different versions. This way you can quickly see which

189
00:09:19.559 --> 00:09:21.600
<v Speaker 2>versions have a better security history.

190
00:09:21.879 --> 00:09:24.159
<v Speaker 1>Okay, we've chosen our run time one with a clean

191
00:09:24.200 --> 00:09:26.600
<v Speaker 1>bill of health, or as clean as we can find.

192
00:09:27.200 --> 00:09:29.559
<v Speaker 1>What's next on our code security checklist?

193
00:09:29.879 --> 00:09:33.759
<v Speaker 2>Now we dive into the sometimes complicated world of the

194
00:09:33.799 --> 00:09:36.279
<v Speaker 2>dependency tree A. This is where things can get a

195
00:09:36.320 --> 00:09:36.799
<v Speaker 2>little messed.

196
00:09:36.799 --> 00:09:39.240
<v Speaker 1>Okay, you've got my attention. Tell me more about this

197
00:09:39.279 --> 00:09:41.320
<v Speaker 1>dependency tree and why it's so important.

198
00:09:41.720 --> 00:09:45.200
<v Speaker 2>Serverless apps, just like most software today, rely on external

199
00:09:45.200 --> 00:09:48.240
<v Speaker 2>libraries and packages. These are pre built code modules that

200
00:09:48.320 --> 00:09:52.799
<v Speaker 2>handle specific tasks, but these dependencies often have their own dependencies,

201
00:09:52.919 --> 00:09:54.919
<v Speaker 2>creating a complex web of connections.

202
00:09:55.159 --> 00:09:56.840
<v Speaker 1>Sounds like a tangled web, it can be.

203
00:09:57.360 --> 00:09:59.799
<v Speaker 2>And the problem is vulnerabilities can be hidden deep within

204
00:09:59.799 --> 00:10:03.639
<v Speaker 2>this tree of vulnerability and a seemingly small dependency can

205
00:10:03.679 --> 00:10:05.279
<v Speaker 2>impact your entire application.

206
00:10:05.759 --> 00:10:08.759
<v Speaker 1>Yikes, that's a little scary. So how do we untangle

207
00:10:08.799 --> 00:10:11.559
<v Speaker 1>this mess and find those vulnerabilities before they cause trouble?

208
00:10:11.799 --> 00:10:14.559
<v Speaker 2>Dependency tree tools are your friends. They can help you

209
00:10:14.679 --> 00:10:19.200
<v Speaker 2>visualize and understand the relationships between your applications dependencies.

210
00:10:18.799 --> 00:10:21.360
<v Speaker 1>So we can see the whole ecosystem and its potential

211
00:10:21.399 --> 00:10:23.159
<v Speaker 1>weak points exactly well.

212
00:10:23.200 --> 00:10:25.960
<v Speaker 2>For example, if you're working with NOJS, there's a tool

213
00:10:26.000 --> 00:10:29.080
<v Speaker 2>called an vodka that creates a visual map of your

214
00:10:29.080 --> 00:10:32.360
<v Speaker 2>dependency tree. Once you have that map, you can assess

215
00:10:32.399 --> 00:10:34.279
<v Speaker 2>each package's security individually.

216
00:10:34.600 --> 00:10:37.120
<v Speaker 1>So it's not just about picking a package that does

217
00:10:37.159 --> 00:10:39.759
<v Speaker 1>the job, but also making sure it's secure absolutely.

218
00:10:40.200 --> 00:10:42.879
<v Speaker 2>Look for packages that are well maintained, have a solid

219
00:10:42.879 --> 00:10:46.320
<v Speaker 2>security track record, and ideally are actively supported by a

220
00:10:46.399 --> 00:10:47.159
<v Speaker 2>large community.

221
00:10:47.240 --> 00:10:49.840
<v Speaker 1>So looking for packages that are not just functional, but

222
00:10:49.919 --> 00:10:52.559
<v Speaker 1>also have a good reputation for security.

223
00:10:52.159 --> 00:10:55.679
<v Speaker 2>Right and remember, security is an ongoing effort. You need

224
00:10:55.679 --> 00:10:57.919
<v Speaker 2>to keep your dependencies up to date and watch out

225
00:10:57.919 --> 00:11:00.759
<v Speaker 2>for new vulnerabilities. Things are all always changing.

226
00:11:01.000 --> 00:11:04.080
<v Speaker 1>Got it? Okay, so we've picked a secure run time

227
00:11:04.159 --> 00:11:08.120
<v Speaker 1>engine and we've vetted our dependencies. What else can we

228
00:11:08.159 --> 00:11:09.399
<v Speaker 1>do to secure our code?

229
00:11:09.600 --> 00:11:12.480
<v Speaker 2>Static code analysis is a must. It's where you use

230
00:11:12.559 --> 00:11:15.960
<v Speaker 2>tools to scan your code for potential security flaws without

231
00:11:15.960 --> 00:11:16.799
<v Speaker 2>actually running it.

232
00:11:17.000 --> 00:11:19.799
<v Speaker 1>So like a spell checker for code catching mistakes that

233
00:11:19.840 --> 00:11:20.960
<v Speaker 1>could lead to problems.

234
00:11:21.320 --> 00:11:23.879
<v Speaker 2>That's a good way to think about it. These tools

235
00:11:23.960 --> 00:11:28.440
<v Speaker 2>can find things like buffer overflows, SEQL injection vulnerabilities, cross

236
00:11:28.440 --> 00:11:31.519
<v Speaker 2>site scripting issues, and so on. There are tons of

237
00:11:31.519 --> 00:11:35.039
<v Speaker 2>tools out there, some free, some paid. Pick one that

238
00:11:35.080 --> 00:11:37.679
<v Speaker 2>works for you and make it part of your development process.

239
00:11:38.039 --> 00:11:40.759
<v Speaker 1>Got it? Static code analysis? Check what's next?

240
00:11:41.039 --> 00:11:44.559
<v Speaker 2>Unit tests and regression tests. Don't underestimate their importance.

241
00:11:44.720 --> 00:11:47.919
<v Speaker 1>Testing testing, I know it's important, but why is it

242
00:11:48.000 --> 00:11:49.200
<v Speaker 1>so crucial for security?

243
00:11:49.840 --> 00:11:52.840
<v Speaker 2>Unit tests verify that individual parts of your code work

244
00:11:52.919 --> 00:11:56.679
<v Speaker 2>as expected. But you can also use them to simulate attacks.

245
00:11:57.039 --> 00:11:59.039
<v Speaker 1>Hold on, we can attack our own code? Sounds a

246
00:11:59.080 --> 00:11:59.639
<v Speaker 1>little strange.

247
00:12:00.639 --> 00:12:04.440
<v Speaker 2>You can, and you should. By simulating attacks like SEQL

248
00:12:04.480 --> 00:12:07.039
<v Speaker 2>injection or cross eight scripting, you can see how your

249
00:12:07.039 --> 00:12:09.879
<v Speaker 2>code handles it and make sure it can withstand those attacks.

250
00:12:10.039 --> 00:12:12.919
<v Speaker 1>So finding the weaknesses in our defenses before the attackers do.

251
00:12:13.159 --> 00:12:15.960
<v Speaker 2>Exactly, and regression tests make sure that any changes you

252
00:12:16.000 --> 00:12:19.559
<v Speaker 2>make to your code don't accidentally introduce new security flaws.

253
00:12:19.879 --> 00:12:22.559
<v Speaker 1>Right, making sure that fixing one thing doesn't break something

254
00:12:22.559 --> 00:12:24.399
<v Speaker 1>else and open up a new vulnerability.

255
00:12:24.480 --> 00:12:27.600
<v Speaker 2>You got it. By automating these tests, you're creating a

256
00:12:27.600 --> 00:12:31.360
<v Speaker 2>safety net that catches security issues early in the development process.

257
00:12:31.360 --> 00:12:34.240
<v Speaker 1>Okay, that makes sense. We've analyzed the code, We've tested

258
00:12:34.240 --> 00:12:37.039
<v Speaker 1>it thoroughly. Anything else we need to consider when it

259
00:12:37.039 --> 00:12:38.080
<v Speaker 1>comes to the code itself.

260
00:12:38.360 --> 00:12:41.919
<v Speaker 2>Input validation is a big one. Serveralist functions are often

261
00:12:41.919 --> 00:12:45.200
<v Speaker 2>triggered by different events, like an HTDP request or a

262
00:12:45.200 --> 00:12:48.120
<v Speaker 2>file upload. You need to validate that the data coming

263
00:12:48.159 --> 00:12:49.759
<v Speaker 2>in is what you're expecting.

264
00:12:49.679 --> 00:12:51.519
<v Speaker 1>So don't just trust the data blindly.

265
00:12:51.720 --> 00:12:54.440
<v Speaker 2>Right. Attackers can try to sneak malicious code in through

266
00:12:54.480 --> 00:12:57.240
<v Speaker 2>those inputs. They might try to inject SQL into a

267
00:12:57.279 --> 00:13:00.600
<v Speaker 2>database query or upload a file with a hidden and payload.

268
00:13:00.720 --> 00:13:02.480
<v Speaker 1>Okay, I can see how that could be a problem.

269
00:13:02.600 --> 00:13:04.639
<v Speaker 1>How do we validate these inputs and keep the bad

270
00:13:04.679 --> 00:13:05.200
<v Speaker 1>stuff out?

271
00:13:05.240 --> 00:13:07.240
<v Speaker 2>It depends on where the data is coming from. If

272
00:13:07.240 --> 00:13:10.279
<v Speaker 2>it's an HTTP request, you can validate the body content,

273
00:13:10.720 --> 00:13:13.480
<v Speaker 2>check for required fields, and make sure the data types

274
00:13:13.559 --> 00:13:16.840
<v Speaker 2>match what you expect. For example, if you're expecting a number,

275
00:13:17.279 --> 00:13:19.639
<v Speaker 2>verify that it is a number, not some text that

276
00:13:19.639 --> 00:13:21.039
<v Speaker 2>could contain harmful code.

277
00:13:21.080 --> 00:13:25.080
<v Speaker 1>So being cautious and double checking everything we receive exactly.

278
00:13:25.519 --> 00:13:28.279
<v Speaker 2>And the book has some really clear code examples for

279
00:13:28.320 --> 00:13:32.360
<v Speaker 2>different event sources like HTDP requests and S three that

280
00:13:32.399 --> 00:13:34.639
<v Speaker 2>show how to do input validation the right way.

281
00:13:34.840 --> 00:13:38.080
<v Speaker 1>Okay, input validation check. We've covered a lot choosing the

282
00:13:38.120 --> 00:13:42.480
<v Speaker 1>right run time, assessing dependencies, static code analysis, testing, and

283
00:13:42.639 --> 00:13:45.879
<v Speaker 1>input validation. It feels like we've built a pretty solid

284
00:13:45.919 --> 00:13:47.360
<v Speaker 1>foundation for secure code.

285
00:13:47.360 --> 00:13:50.039
<v Speaker 2>What's next Now, let's zom out from the code itself

286
00:13:50.080 --> 00:13:53.159
<v Speaker 2>and look at the broader serverless environment. We need to

287
00:13:53.200 --> 00:13:56.159
<v Speaker 2>talk about how to restrict permissions across your infrastructure.

288
00:13:56.440 --> 00:13:59.039
<v Speaker 1>Okay, I'm ready to start locking things down. The book

289
00:13:59.080 --> 00:14:03.159
<v Speaker 1>talks about least privilege. What does that mean for serverless?

290
00:14:03.399 --> 00:14:06.519
<v Speaker 2>Least privilege means giving your users and services only the

291
00:14:06.559 --> 00:14:09.879
<v Speaker 2>permissions they absolutely need, like giving someone the key to

292
00:14:09.960 --> 00:14:12.720
<v Speaker 2>a specific room instead of a master key to the

293
00:14:12.840 --> 00:14:13.480
<v Speaker 2>entire building.

294
00:14:13.639 --> 00:14:17.879
<v Speaker 1>So compartmentalizing access, limiting the damage if something goes wrong exactly.

295
00:14:18.000 --> 00:14:21.320
<v Speaker 2>In serverleists, this means carefully setting permissions for your functions,

296
00:14:21.440 --> 00:14:25.399
<v Speaker 2>data stores, and other resources, give each component just enough

297
00:14:25.440 --> 00:14:27.440
<v Speaker 2>access to do its job, nothing more.

298
00:14:27.600 --> 00:14:29.440
<v Speaker 1>Okay, that makes sense in theory, but how do we

299
00:14:29.519 --> 00:14:32.519
<v Speaker 1>actually do this? It seems like it could get pretty complicated.

300
00:14:32.799 --> 00:14:35.360
<v Speaker 2>It can be, but the good news is that cloud

301
00:14:35.399 --> 00:14:40.120
<v Speaker 2>providers like AWS, Azure, and Google Cloud offer very fine

302
00:14:40.159 --> 00:14:44.440
<v Speaker 2>grained permission controls. Let's start with AWS. They use a

303
00:14:44.480 --> 00:14:47.559
<v Speaker 2>system of users, groups, roles, and policies.

304
00:14:47.919 --> 00:14:50.000
<v Speaker 1>Okay, break that down for me. I know about users

305
00:14:50.000 --> 00:14:52.000
<v Speaker 1>in groups, but what are roles in policies.

306
00:14:52.200 --> 00:14:55.240
<v Speaker 2>Users are individual accounts like the ones your developers and

307
00:14:55.240 --> 00:14:59.320
<v Speaker 2>admins use. Groups are collections of users who need similar permissions.

308
00:15:00.120 --> 00:15:03.240
<v Speaker 2>Roles are sets of permissions that you can assign to users, groups,

309
00:15:03.360 --> 00:15:05.279
<v Speaker 2>or even AWS services themselves.

310
00:15:05.360 --> 00:15:08.799
<v Speaker 1>So roles are like templates for permissions, predefined sets that

311
00:15:08.799 --> 00:15:10.879
<v Speaker 1>we can apply to different entities exactly.

312
00:15:11.480 --> 00:15:13.799
<v Speaker 2>And policies are the rules that define what's allowed and

313
00:15:13.799 --> 00:15:17.080
<v Speaker 2>what's not. They're written in JSON, which could be a

314
00:15:17.080 --> 00:15:19.600
<v Speaker 2>bit intimidating at first, but it's actually quite logical once

315
00:15:19.639 --> 00:15:20.320
<v Speaker 2>you get used to it.

316
00:15:20.399 --> 00:15:22.360
<v Speaker 1>Okay, I'm willing to give it a try. So how

317
00:15:22.360 --> 00:15:24.279
<v Speaker 1>do we use all of this to put the principle

318
00:15:24.279 --> 00:15:26.000
<v Speaker 1>of least privilege into practice.

319
00:15:26.240 --> 00:15:28.200
<v Speaker 2>Let's say you have a Lambda function that needs to

320
00:15:28.240 --> 00:15:32.039
<v Speaker 2>read data from a Dynamo dB table. You'd create a

321
00:15:32.120 --> 00:15:34.759
<v Speaker 2>role just for that function, give it read access to

322
00:15:34.799 --> 00:15:38.279
<v Speaker 2>only that specific Dynamo dB table, and deny access to

323
00:15:38.279 --> 00:15:38.919
<v Speaker 2>everything else.

324
00:15:39.000 --> 00:15:43.960
<v Speaker 1>So very specific, limited permissions tailored to that function's exact

325
00:15:44.080 --> 00:15:45.159
<v Speaker 1>needs precisely.

326
00:15:45.840 --> 00:15:47.919
<v Speaker 2>The book has a really clear example of how to

327
00:15:47.960 --> 00:15:51.039
<v Speaker 2>create a policy for this scenario. It even shows you

328
00:15:51.080 --> 00:15:53.639
<v Speaker 2>the JSON code and explains how to apply it to

329
00:15:53.679 --> 00:15:54.480
<v Speaker 2>your Lambda function.

330
00:15:54.639 --> 00:15:57.480
<v Speaker 1>That's helpful. What about Azure is their system similar.

331
00:15:57.639 --> 00:16:01.279
<v Speaker 2>Azure also uses users, groups, and roles, but their permission

332
00:16:01.279 --> 00:16:05.120
<v Speaker 2>documents are called role definitions. These role definitions outline what

333
00:16:05.159 --> 00:16:07.519
<v Speaker 2>a user or group can do with a specific resource.

334
00:16:08.039 --> 00:16:11.919
<v Speaker 1>Okay, so the principles are the same, just slightly different terminology.

335
00:16:11.440 --> 00:16:15.320
<v Speaker 2>Right, And Azure also has managed identities for services. This

336
00:16:15.440 --> 00:16:18.360
<v Speaker 2>means you don't have to directly manage credentials for your services.

337
00:16:18.679 --> 00:16:20.399
<v Speaker 2>Azure takes care of that behind the scenes.

338
00:16:20.559 --> 00:16:22.519
<v Speaker 1>That sounds like it could make things a lot easier.

339
00:16:22.679 --> 00:16:25.480
<v Speaker 2>It Can and Google Cloud well, they have their own

340
00:16:25.519 --> 00:16:30.960
<v Speaker 2>flavor of permission management called cloud iam. It's based on roles, members, policies,

341
00:16:31.000 --> 00:16:31.600
<v Speaker 2>and scopes.

342
00:16:31.840 --> 00:16:34.759
<v Speaker 1>Okay, so each provider has its own way of doing things,

343
00:16:35.080 --> 00:16:38.960
<v Speaker 1>but the core idea of least privilege is the same.

344
00:16:38.879 --> 00:16:42.559
<v Speaker 2>Absolutely and regardless of the platform. It's super important to

345
00:16:42.600 --> 00:16:44.840
<v Speaker 2>review and update your permissions regularly.

346
00:16:45.200 --> 00:16:47.840
<v Speaker 1>Why is that so important? I get setting things up

347
00:16:47.840 --> 00:16:50.759
<v Speaker 1>correctly initially, but why revisit them later?

348
00:16:51.039 --> 00:16:54.759
<v Speaker 2>Because things change, your application grows, you add new features,

349
00:16:55.000 --> 00:16:57.399
<v Speaker 2>team members come and go. You need to make sure

350
00:16:57.440 --> 00:16:59.960
<v Speaker 2>your permissions are always up to date and that nobody

351
00:17:00.159 --> 00:17:01.720
<v Speaker 2>has access they don't need anymore.

352
00:17:01.919 --> 00:17:04.319
<v Speaker 1>So permissions are not a one time thing. They need

353
00:17:04.359 --> 00:17:05.960
<v Speaker 1>ongoing attention exactly.

354
00:17:06.000 --> 00:17:09.240
<v Speaker 2>It's an essential part of keeping your serverlist environment secure.

355
00:17:09.359 --> 00:17:13.480
<v Speaker 1>Got it? Okay, so we've tackled rescripting permissions. What's next

356
00:17:13.559 --> 00:17:15.599
<v Speaker 1>on our server list security checklist?

357
00:17:15.799 --> 00:17:18.640
<v Speaker 2>Let's move on to account management. Your first line of

358
00:17:18.640 --> 00:17:19.759
<v Speaker 2>defense makes sense.

359
00:17:19.880 --> 00:17:22.240
<v Speaker 1>Secure the foundation before building on top of it.

360
00:17:22.400 --> 00:17:26.039
<v Speaker 2>Right, every cloud provider has a master account, which is

361
00:17:26.079 --> 00:17:28.759
<v Speaker 2>like having the keys to the kingdom. If that account

362
00:17:28.839 --> 00:17:31.480
<v Speaker 2>is compromised, an attacker can do a lot of damage.

363
00:17:31.559 --> 00:17:34.160
<v Speaker 1>Okay, that's not good. How do we protect this master

364
00:17:34.200 --> 00:17:36.240
<v Speaker 1>account and make sure those keys don't fall into the

365
00:17:36.279 --> 00:17:37.000
<v Speaker 1>wrong hands.

366
00:17:37.279 --> 00:17:40.680
<v Speaker 2>The book has some really good tips. First, don't use

367
00:17:40.720 --> 00:17:43.839
<v Speaker 2>a personal email address for the master account. Use a

368
00:17:43.880 --> 00:17:46.359
<v Speaker 2>dedicated service or group email address instead.

369
00:17:46.480 --> 00:17:48.799
<v Speaker 1>That way, if someone leaves, we don't lose access.

370
00:17:48.960 --> 00:17:53.400
<v Speaker 2>Right. Next, make sure you provide detailed contact information for

371
00:17:53.440 --> 00:17:56.200
<v Speaker 2>the account. This helps the provider reach you quickly if

372
00:17:56.200 --> 00:17:57.680
<v Speaker 2>there's any suspicious activity.

373
00:17:57.839 --> 00:18:00.279
<v Speaker 1>Okay, be reachable just in case something happened.

374
00:18:00.359 --> 00:18:03.880
<v Speaker 2>Right, And obviously, use a strong password for the master account.

375
00:18:03.920 --> 00:18:07.799
<v Speaker 2>That means long, complex, unique, not use anywhere else.

376
00:18:07.920 --> 00:18:10.279
<v Speaker 1>No password one, two three for the master account.

377
00:18:10.319 --> 00:18:14.039
<v Speaker 2>Definitely not and super important. Enable multi factor authentication.

378
00:18:14.119 --> 00:18:16.200
<v Speaker 1>We've talked about MFA a lot. It's like the gold

379
00:18:16.240 --> 00:18:17.559
<v Speaker 1>standard of security, right.

380
00:18:17.440 --> 00:18:19.559
<v Speaker 2>It's pretty close. Yeah. MFA makes it a lot harder

381
00:18:19.559 --> 00:18:21.759
<v Speaker 2>for attackers to gain access even if they get hold

382
00:18:21.759 --> 00:18:24.039
<v Speaker 2>of your password, because they need that second factor.

383
00:18:24.200 --> 00:18:28.039
<v Speaker 1>Okay, MFA. Check any other best practices for securing the

384
00:18:28.079 --> 00:18:28.839
<v Speaker 1>master account.

385
00:18:28.880 --> 00:18:31.079
<v Speaker 2>Yeah. Make it a habit to review and update your

386
00:18:31.079 --> 00:18:35.200
<v Speaker 2>security settings regularly. Don't get lazy and assume everything is fine.

387
00:18:35.519 --> 00:18:36.559
<v Speaker 2>Stay on top of it.

388
00:18:36.799 --> 00:18:39.119
<v Speaker 1>Proactive security hygiene.

389
00:18:38.559 --> 00:18:41.279
<v Speaker 2>Exactly security is a journey, not a destination.

390
00:18:41.599 --> 00:18:45.680
<v Speaker 1>I'm getting that message loud and clear. So we've locked

391
00:18:45.720 --> 00:18:49.039
<v Speaker 1>down the master account. Anything else to consider when it

392
00:18:49.079 --> 00:18:50.359
<v Speaker 1>comes to account management.

393
00:18:50.960 --> 00:18:54.839
<v Speaker 2>Here's a pro tip. Use separate accounts for different environments

394
00:18:55.240 --> 00:18:57.279
<v Speaker 2>like development, testing, and production.

395
00:18:57.519 --> 00:18:58.720
<v Speaker 1>What's the advantage of doing that?

396
00:18:59.400 --> 00:19:02.839
<v Speaker 2>It limits the damage. If one environment is compromised, it

397
00:19:02.880 --> 00:19:06.480
<v Speaker 2>won't necessarily affect the others, like having firewalls between different

398
00:19:06.519 --> 00:19:07.519
<v Speaker 2>sections of a building.

399
00:19:07.640 --> 00:19:12.519
<v Speaker 1>So it's about isolating and containing any potential breaches exactly.

400
00:19:12.759 --> 00:19:15.359
<v Speaker 2>And it can also help you manage permissions more effectively.

401
00:19:15.440 --> 00:19:18.440
<v Speaker 1>Okay, separate accounts for different environmentst it. We've talked about

402
00:19:18.440 --> 00:19:21.440
<v Speaker 1>account management. What's next in our serverlest security strategy.

403
00:19:21.960 --> 00:19:25.079
<v Speaker 2>Let's talk about protecting secrets. This is where we get

404
00:19:25.079 --> 00:19:26.960
<v Speaker 2>into safeguarding sensitive information.

405
00:19:27.240 --> 00:19:30.039
<v Speaker 1>Okay, let's dive into the world of secrets. Why is

406
00:19:30.079 --> 00:19:33.279
<v Speaker 1>protecting secrets so crucial in the serverless world.

407
00:19:33.599 --> 00:19:36.119
<v Speaker 2>Secrets are like the crown jewels of your app, things

408
00:19:36.119 --> 00:19:40.960
<v Speaker 2>like API keys, database credentials, encryption keys. If these are compromised,

409
00:19:41.359 --> 00:19:44.839
<v Speaker 2>it could mean serious trouble. Attackers could get access to

410
00:19:44.880 --> 00:19:55.480
<v Speaker 2>sensitive data, compromise your systems absolutely, and the first rule

411
00:19:55.519 --> 00:19:59.559
<v Speaker 2>of secret protection is never hard code secrets directly into

412
00:19:59.599 --> 00:20:00.000
<v Speaker 2>your code.

413
00:20:00.319 --> 00:20:02.400
<v Speaker 1>Why is that so bad? It seems like the easiest

414
00:20:02.400 --> 00:20:03.640
<v Speaker 1>way to do things.

415
00:20:03.359 --> 00:20:06.400
<v Speaker 2>If your code has ever compromised, those hard coded secrets

416
00:20:06.400 --> 00:20:09.160
<v Speaker 2>are out in the open for anyone to see. Plus,

417
00:20:09.200 --> 00:20:11.599
<v Speaker 2>it makes it much harder to rotate secrets, which is

418
00:20:11.640 --> 00:20:12.920
<v Speaker 2>a security best practice.

419
00:20:12.960 --> 00:20:16.359
<v Speaker 1>Okay, so no hard coding secrets, got it? What are

420
00:20:16.359 --> 00:20:19.319
<v Speaker 1>the alternatives? How do we manage these secrets securely?

421
00:20:19.519 --> 00:20:24.079
<v Speaker 2>Cloud providers offer secure secret management services? For example, AWS

422
00:20:24.160 --> 00:20:28.079
<v Speaker 2>has Systems Manager Parameter Store or SSM and Key Management

423
00:20:28.119 --> 00:20:29.039
<v Speaker 2>Service KMS.

424
00:20:29.119 --> 00:20:31.440
<v Speaker 1>Okay, those are some mouthful acronyms. Tell me more about

425
00:20:31.440 --> 00:20:32.880
<v Speaker 1>how they work and how they can help us keep

426
00:20:32.880 --> 00:20:33.640
<v Speaker 1>our secrets safe.

427
00:20:33.720 --> 00:20:36.799
<v Speaker 2>Think of SSM as a secure vault. You can store

428
00:20:36.839 --> 00:20:40.240
<v Speaker 2>secrets there either as plain text or encrypted values, and

429
00:20:40.279 --> 00:20:44.319
<v Speaker 2>you control access using those im policies we talked about earlier. So,

430
00:20:44.400 --> 00:20:46.839
<v Speaker 2>for example, let's say you have an apikey that your

431
00:20:46.839 --> 00:20:49.519
<v Speaker 2>function needs. Instead of hard coding it, you store it

432
00:20:49.519 --> 00:20:51.960
<v Speaker 2>an SSM and retrieve it when your function runs.

433
00:20:52.240 --> 00:20:54.799
<v Speaker 1>So the secret stays outside the code, making it much

434
00:20:54.839 --> 00:20:56.240
<v Speaker 1>harder for attackers to get to it.

435
00:20:56.319 --> 00:20:59.759
<v Speaker 2>Exactly, and CAMTS adds another layer of protection. You can

436
00:20:59.839 --> 00:21:02.720
<v Speaker 2>use it to encrypt and decrypt those secrets, and even

437
00:21:02.839 --> 00:21:04.839
<v Speaker 2>use it with SSM to encrypt the secrets you.

438
00:21:04.799 --> 00:21:08.599
<v Speaker 1>Store there double the protection. What about other cloud providers

439
00:21:08.640 --> 00:21:10.000
<v Speaker 1>do they have similar services?

440
00:21:10.079 --> 00:21:12.640
<v Speaker 2>They do. Azure has key vault and Google Cloud has

441
00:21:12.680 --> 00:21:16.920
<v Speaker 2>Secret Manager. They both offer similar features for securely storing

442
00:21:16.920 --> 00:21:17.920
<v Speaker 2>and managing secrets.

443
00:21:18.079 --> 00:21:20.400
<v Speaker 1>Okay, so regardless of which platform we're using, there are

444
00:21:20.480 --> 00:21:23.279
<v Speaker 1>secure ways to handle those secrets. But how do we

445
00:21:23.359 --> 00:21:26.079
<v Speaker 1>choose the right approach? There are a few options.

446
00:21:26.359 --> 00:21:29.119
<v Speaker 2>It depends on your needs and how sensive your secrets are.

447
00:21:29.559 --> 00:21:32.319
<v Speaker 2>For example, if you need to change your secrets often,

448
00:21:32.640 --> 00:21:35.640
<v Speaker 2>SSM might be a good choice. If you're working with

449
00:21:35.720 --> 00:21:39.359
<v Speaker 2>really sensitive data, encrypting your secrets with KMS might be

450
00:21:39.359 --> 00:21:40.119
<v Speaker 2>the best approach.

451
00:21:40.680 --> 00:21:43.079
<v Speaker 1>So it's about figuring out the risks and picking the

452
00:21:43.119 --> 00:21:44.279
<v Speaker 1>best tool for the job.

453
00:21:44.359 --> 00:21:47.960
<v Speaker 2>You got it, And just like with permissions, secret management

454
00:21:48.079 --> 00:21:51.640
<v Speaker 2>is an ongoing thing. Check your secrets regularly, rotate them

455
00:21:51.640 --> 00:21:54.759
<v Speaker 2>when needed, and make sure only those who absolutely need

456
00:21:54.799 --> 00:21:56.319
<v Speaker 2>access can get to them.

457
00:21:56.640 --> 00:21:59.559
<v Speaker 1>Got it, So secure the code, lock down the secrets.

458
00:22:00.119 --> 00:22:03.720
<v Speaker 1>What's the next step in building our serverless security? Fortress?

459
00:22:03.799 --> 00:22:07.799
<v Speaker 2>Authentication and authorization? The gatekeepers of your application.

460
00:22:07.880 --> 00:22:09.839
<v Speaker 1>Okay, bring on the gatekeepers. Can you remind me what

461
00:22:09.880 --> 00:22:12.480
<v Speaker 1>the difference is between authentication and authorization? I always get

462
00:22:12.480 --> 00:22:13.039
<v Speaker 1>those mixed up.

463
00:22:13.160 --> 00:22:15.680
<v Speaker 2>Of course, authentication is proving who you are, like showing

464
00:22:15.720 --> 00:22:18.720
<v Speaker 2>your idea. Authorization is about what you're allowed to do

465
00:22:18.799 --> 00:22:21.720
<v Speaker 2>once you're in, like having different levels of access into building.

466
00:22:21.799 --> 00:22:25.920
<v Speaker 1>Okay, So authentication confirms your identity and authorization determines your

467
00:22:25.960 --> 00:22:27.519
<v Speaker 1>access privileges.

468
00:22:27.279 --> 00:22:30.880
<v Speaker 2>Exactly, and in serverless there are a few different ways

469
00:22:30.920 --> 00:22:32.039
<v Speaker 2>to handle authentication.

470
00:22:32.680 --> 00:22:36.079
<v Speaker 1>Let's talk about those. The book mentions the classic username

471
00:22:36.119 --> 00:22:38.960
<v Speaker 1>and password approach. How does that work with serverless?

472
00:22:39.480 --> 00:22:42.359
<v Speaker 2>The basics are the same as with traditional applications. The

473
00:22:42.440 --> 00:22:45.920
<v Speaker 2>user enters their credentials and the system checks them against

474
00:22:45.960 --> 00:22:49.680
<v Speaker 2>a database of valid users. But there are some important

475
00:22:49.720 --> 00:22:52.759
<v Speaker 2>security things could consider. You need to make sure those

476
00:22:52.759 --> 00:22:56.599
<v Speaker 2>passwords are hashed securely and stored safely, ideally using a

477
00:22:56.599 --> 00:22:58.960
<v Speaker 2>strong algorithm and something called salting.

478
00:22:58.960 --> 00:23:01.839
<v Speaker 1>So even if the database is compromised, the passwords themselves

479
00:23:01.880 --> 00:23:02.559
<v Speaker 1>are protected.

480
00:23:02.799 --> 00:23:05.519
<v Speaker 2>Right. It's also good to have things like rate limiting

481
00:23:05.799 --> 00:23:08.319
<v Speaker 2>and account lockout to prevent brute force attacks.

482
00:23:08.400 --> 00:23:10.640
<v Speaker 1>So we're limiting how many times someone can try to

483
00:23:10.680 --> 00:23:13.480
<v Speaker 1>log in and making it harder to guess passwords exactly.

484
00:23:13.839 --> 00:23:17.400
<v Speaker 2>But the username and password approach has some limitations, especially

485
00:23:17.440 --> 00:23:20.079
<v Speaker 2>these days. Oh it can be a pain for users,

486
00:23:20.160 --> 00:23:24.279
<v Speaker 2>especially on mobile, and it's not ideal for communication between machines,

487
00:23:24.480 --> 00:23:25.920
<v Speaker 2>which happens a lot and serverless.

488
00:23:25.920 --> 00:23:28.960
<v Speaker 1>Okay, so what are the alternatives when username and password

489
00:23:29.000 --> 00:23:30.240
<v Speaker 1>isn't the best choice.

490
00:23:30.440 --> 00:23:34.160
<v Speaker 2>Apikeys are often used for machine to machine communication. They're

491
00:23:34.200 --> 00:23:39.000
<v Speaker 2>basically long unique passwords that identify as specific application or service.

492
00:23:39.200 --> 00:23:42.440
<v Speaker 1>So machines can authenticate themselves without a human typing and

493
00:23:42.480 --> 00:23:43.119
<v Speaker 1>a password.

494
00:23:43.319 --> 00:23:46.160
<v Speaker 2>Right. But API keys can be risky if they're not

495
00:23:46.240 --> 00:23:50.160
<v Speaker 2>handled properly. Static keys, the ones that never change, are

496
00:23:50.200 --> 00:23:54.240
<v Speaker 2>particularly vulnerable. If an attacker gets a static key, they

497
00:23:54.319 --> 00:23:55.720
<v Speaker 2>basically have access forever.

498
00:23:56.240 --> 00:23:59.799
<v Speaker 1>That sounds like a nightmare. So how do we avoid that?

499
00:24:00.240 --> 00:24:04.799
<v Speaker 2>Rotate your apikeys regularly and store them securely. Those secret

500
00:24:04.799 --> 00:24:07.480
<v Speaker 2>management services we talked about earlier could be really helpful

501
00:24:07.519 --> 00:24:07.799
<v Speaker 2>for this.

502
00:24:08.000 --> 00:24:11.039
<v Speaker 1>Okay. Apikes are good for machine communication, but we need

503
00:24:11.079 --> 00:24:14.559
<v Speaker 1>to protect them just like any other sensitive information. What

504
00:24:14.599 --> 00:24:16.240
<v Speaker 1>other options are there for authentication?

505
00:24:16.880 --> 00:24:20.799
<v Speaker 2>Jason Web tokens or JWTs are a great tool for authorization.

506
00:24:21.039 --> 00:24:23.960
<v Speaker 1>I've heard of those. They're like digital passports.

507
00:24:23.440 --> 00:24:24.599
<v Speaker 2>Right, that's a good analogy.

508
00:24:24.720 --> 00:24:24.960
<v Speaker 1>Yeah.

509
00:24:25.279 --> 00:24:28.240
<v Speaker 2>JWT is a digitally signed token that contains info about

510
00:24:28.279 --> 00:24:29.799
<v Speaker 2>a user, like their ID and.

511
00:24:29.799 --> 00:24:31.480
<v Speaker 1>Permissions and what makes them secure.

512
00:24:31.920 --> 00:24:34.759
<v Speaker 2>They're digitally signed. This makes sure nobody has tampered with

513
00:24:34.799 --> 00:24:35.960
<v Speaker 2>the information in the token.

514
00:24:36.200 --> 00:24:39.640
<v Speaker 1>Okay, like a tamper proof seal of authenticity. How do

515
00:24:39.680 --> 00:24:40.640
<v Speaker 1>they actually work?

516
00:24:41.000 --> 00:24:44.400
<v Speaker 2>When a user logs in successfully, maybe using a username

517
00:24:44.400 --> 00:24:48.599
<v Speaker 2>and password, the system gives them a JWT. They can

518
00:24:48.640 --> 00:24:51.880
<v Speaker 2>then use this token to access protected resources, so.

519
00:24:51.880 --> 00:24:56.079
<v Speaker 1>It's proof of identity and access privileges all in one exactly.

520
00:24:56.440 --> 00:24:59.319
<v Speaker 2>And JWTs can be used with different authentication methods like

521
00:24:59.400 --> 00:25:03.000
<v Speaker 2>using impact this word, API keys and even social logins.

522
00:25:03.240 --> 00:25:04.880
<v Speaker 1>The prety flexible they are, and.

523
00:25:04.799 --> 00:25:07.119
<v Speaker 2>They're becoming more and more popular in the serverless world.

524
00:25:07.200 --> 00:25:09.920
<v Speaker 1>Okay, JWT's got it. What else is out there? We've

525
00:25:09.920 --> 00:25:11.680
<v Speaker 1>covered quite a few methods already both.

526
00:25:11.680 --> 00:25:14.160
<v Speaker 2>Two point zero is a really common standard for what's

527
00:25:14.160 --> 00:25:15.480
<v Speaker 2>called delegated authorization.

528
00:25:15.960 --> 00:25:19.960
<v Speaker 1>Delegated authorization that sounds complicated. Can you explain it simply?

529
00:25:20.079 --> 00:25:22.680
<v Speaker 2>It's not as complex as it sounds. Imagine you want

530
00:25:22.680 --> 00:25:25.200
<v Speaker 2>to use your Google account to log into another app.

531
00:25:25.640 --> 00:25:28.799
<v Speaker 2>You don't have to give that app your Google password. Instead,

532
00:25:28.880 --> 00:25:31.799
<v Speaker 2>Google gives them a token that lets them access your account,

533
00:25:32.000 --> 00:25:33.960
<v Speaker 2>but only to the extent that you've approved.

534
00:25:34.240 --> 00:25:37.359
<v Speaker 1>So you're giving the app permission to act on your behalf,

535
00:25:37.440 --> 00:25:40.400
<v Speaker 1>but without sharing your actual password exactly.

536
00:25:40.599 --> 00:25:43.359
<v Speaker 2>O WOOF is perfect for things like social logins or

537
00:25:43.440 --> 00:25:45.039
<v Speaker 2>connecting to third party services.

538
00:25:45.119 --> 00:25:47.799
<v Speaker 1>Okay, I'm starting to see how all these pieces fit together.

539
00:25:48.039 --> 00:25:50.119
<v Speaker 1>Anything else to keep in mind about OATH.

540
00:25:50.359 --> 00:25:53.440
<v Speaker 2>It's important that those tokens expire. You don't want an

541
00:25:53.480 --> 00:25:56.039
<v Speaker 2>app to have permit access to your account.

542
00:25:55.640 --> 00:25:57.839
<v Speaker 1>Right That would defeat the purpose exactly.

543
00:25:58.240 --> 00:26:00.960
<v Speaker 2>And always double check what permissions giving an app before

544
00:26:00.960 --> 00:26:05.119
<v Speaker 2>you allow access. Don't just click allow without thinking.

545
00:26:05.119 --> 00:26:08.960
<v Speaker 1>So be aware and careful about what we're authorizing. What

546
00:26:09.079 --> 00:26:11.319
<v Speaker 1>other authentication methods are out there?

547
00:26:11.440 --> 00:26:15.000
<v Speaker 2>Open Idconnect or ODC is built on top of o

548
00:26:15.000 --> 00:26:18.119
<v Speaker 2>OOTH two point zero and adds another authentication layer.

549
00:26:18.240 --> 00:26:20.920
<v Speaker 1>Okay, so what's different about OIDC? What does it add?

550
00:26:21.079 --> 00:26:23.319
<v Speaker 2>It gives you a standardized way to check a user's

551
00:26:23.359 --> 00:26:26.519
<v Speaker 2>identity and get basic profile information. It's like a more

552
00:26:26.599 --> 00:26:29.400
<v Speaker 2>robust version of OTH often used for a single sign on,

553
00:26:29.759 --> 00:26:32.640
<v Speaker 2>where you use one set of credentials to access multiple apps.

554
00:26:32.880 --> 00:26:35.799
<v Speaker 1>That sounds convenient and potentially more secure.

555
00:26:36.039 --> 00:26:38.440
<v Speaker 2>It can be, but it's important to pick a trustworthy

556
00:26:38.480 --> 00:26:42.000
<v Speaker 2>identity provider and make sure those access tokens have an expiration.

557
00:26:41.599 --> 00:26:45.359
<v Speaker 1>Date so the same precautions apply. Choose wisely and limit

558
00:26:45.359 --> 00:26:47.319
<v Speaker 1>those token life spans. What else?

559
00:26:47.799 --> 00:26:52.039
<v Speaker 2>Finally, there's SAML, which stands for Security Assertion Markup Language.

560
00:26:52.480 --> 00:26:56.640
<v Speaker 2>It's a standard for exchanging authentication and authorization data between

561
00:26:56.640 --> 00:26:59.039
<v Speaker 2>different systems using XML.

562
00:26:58.960 --> 00:27:02.200
<v Speaker 1>Another acronym for the list. What's SAML all about.

563
00:27:02.400 --> 00:27:05.160
<v Speaker 2>It's commonly used in enterprise environments for things like single

564
00:27:05.200 --> 00:27:07.759
<v Speaker 2>sign on and managing identities across different systems.

565
00:27:07.960 --> 00:27:11.960
<v Speaker 1>So a more enterprise focused approach. Got it. We've explored

566
00:27:12.000 --> 00:27:15.039
<v Speaker 1>a whole range of authentication and authorization methods, from the

567
00:27:15.079 --> 00:27:18.680
<v Speaker 1>simple username and password to the more advanced JWTs in oath.

568
00:27:19.519 --> 00:27:21.640
<v Speaker 1>How do we actually put all of this into practice

569
00:27:21.640 --> 00:27:22.720
<v Speaker 1>in our serverless apps?

570
00:27:22.799 --> 00:27:24.759
<v Speaker 2>It really depends on the platform you're using and what

571
00:27:24.839 --> 00:27:25.960
<v Speaker 2>your application needs.

572
00:27:26.119 --> 00:27:28.480
<v Speaker 1>Can you give me some platform specific examples?

573
00:27:28.680 --> 00:27:32.319
<v Speaker 2>Sure? For AWSAPI Gateway, you can use resource policies to

574
00:27:32.359 --> 00:27:35.640
<v Speaker 2>control who can access your APIs. You can create whitelists

575
00:27:35.680 --> 00:27:40.720
<v Speaker 2>that only allow specific AWS accounts, IP addresses or even vpcs.

576
00:27:40.400 --> 00:27:42.519
<v Speaker 1>So we can really lock down who's allowed to call

577
00:27:42.559 --> 00:27:45.319
<v Speaker 1>our APIs. What other options are there? In AWS?

578
00:27:45.400 --> 00:27:49.200
<v Speaker 2>You can also use AWS land authorizers for custom authentication

579
00:27:49.440 --> 00:27:51.119
<v Speaker 2>and authorization logic, so.

580
00:27:51.119 --> 00:27:54.559
<v Speaker 1>More flexibility for complex scenarios where the standard approaches aren't

581
00:27:54.680 --> 00:27:55.680
<v Speaker 1>enough exactly.

582
00:27:55.960 --> 00:27:59.079
<v Speaker 2>And AWS Cognito is a fully managed service that handles

583
00:27:59.200 --> 00:28:03.440
<v Speaker 2>user authentication and authorization. It works really well with other

584
00:28:03.480 --> 00:28:06.039
<v Speaker 2>AWS services and can take care of a lot of

585
00:28:06.079 --> 00:28:06.839
<v Speaker 2>the hard work for you.

586
00:28:07.079 --> 00:28:09.440
<v Speaker 1>Sounds like AWS gives you a lot of options for

587
00:28:09.480 --> 00:28:11.799
<v Speaker 1>managing authentication and authorization they do.

588
00:28:12.720 --> 00:28:15.200
<v Speaker 2>Now moving on to Azure, you can use app service

589
00:28:15.240 --> 00:28:18.920
<v Speaker 2>authentication to secure your function apps. You could choose from

590
00:28:18.920 --> 00:28:23.160
<v Speaker 2>different identity providers like az your active directory, Facebook, Google

591
00:28:23.240 --> 00:28:23.720
<v Speaker 2>and more.

592
00:28:24.039 --> 00:28:26.119
<v Speaker 1>So with Azure we have a lot of choices for

593
00:28:26.200 --> 00:28:28.519
<v Speaker 1>how users log in exactly.

594
00:28:28.319 --> 00:28:30.680
<v Speaker 2>And you can control the security even more by setting

595
00:28:30.720 --> 00:28:33.640
<v Speaker 2>different authorization levels for your functions. You can allow anyone

596
00:28:33.680 --> 00:28:36.799
<v Speaker 2>to access them or only admin users or anything in.

597
00:28:36.759 --> 00:28:39.240
<v Speaker 1>Between, so we can customize the security based on what

598
00:28:39.319 --> 00:28:40.200
<v Speaker 1>each function does.

599
00:28:40.319 --> 00:28:43.079
<v Speaker 2>Right, and Azure API Management gives you a central place

600
00:28:43.119 --> 00:28:45.720
<v Speaker 2>to control access to your APIs. You can do things

601
00:28:45.759 --> 00:28:50.160
<v Speaker 2>like rate limiting validating databts, blocking access by IP address,

602
00:28:50.319 --> 00:28:50.920
<v Speaker 2>all kinds of.

603
00:28:50.920 --> 00:28:53.880
<v Speaker 1>Stuff, like a security checkpoint for all of our APIs,

604
00:28:53.960 --> 00:28:56.079
<v Speaker 1>making sure only the right requests get through.

605
00:28:56.240 --> 00:28:59.559
<v Speaker 2>That's a great analogy. Lastly, let's look at Google Cloud.

606
00:29:00.400 --> 00:29:03.920
<v Speaker 2>They offer cloud endpoints to secure cloud functions. It acts

607
00:29:03.960 --> 00:29:06.319
<v Speaker 2>as a gateway sitting in front of your functions and

608
00:29:06.400 --> 00:29:11.039
<v Speaker 2>handles authentication, authorization, and a bunch of other API management features.

609
00:29:11.119 --> 00:29:13.960
<v Speaker 1>So another way to manage access to our serverlest functions.

610
00:29:14.039 --> 00:29:17.519
<v Speaker 1>Anything else? Google Cloud offers for authentication and authorization.

611
00:29:17.759 --> 00:29:21.359
<v Speaker 2>Yes, they have Identity Platform for user authentication and Firebase

612
00:29:21.559 --> 00:29:25.480
<v Speaker 2>which gives you even more flexibility with authentication and authorization.

613
00:29:25.680 --> 00:29:29.160
<v Speaker 1>Okay, so plenty of options across all the major cloud platforms.

614
00:29:29.200 --> 00:29:30.680
<v Speaker 1>It seems like we have the tools we.

615
00:29:30.680 --> 00:29:33.319
<v Speaker 2>Need we do. The trick is to choose the approach

616
00:29:33.359 --> 00:29:36.160
<v Speaker 2>that best fits your application and your security needs. There's

617
00:29:36.200 --> 00:29:37.799
<v Speaker 2>no one size fits all solution.

618
00:29:38.319 --> 00:29:41.759
<v Speaker 1>Okay, so far we've talked about securing the code, managing secrets,

619
00:29:42.039 --> 00:29:46.400
<v Speaker 1>and implementing authentication and authorization. What's the next step in

620
00:29:46.440 --> 00:29:48.599
<v Speaker 1>securing our serverlest applications?

621
00:29:49.119 --> 00:29:52.480
<v Speaker 2>Now we focus on the data itself, protecting that sensitive

622
00:29:52.480 --> 00:29:55.519
<v Speaker 2>information that attackers are often after data protection.

623
00:29:55.960 --> 00:29:57.880
<v Speaker 1>This is the heart of what we're trying to protect.

624
00:29:58.839 --> 00:30:02.359
<v Speaker 1>The book mentions the a lost top ten risks, including

625
00:30:02.559 --> 00:30:05.359
<v Speaker 1>sensitive data exposure. What exactly is that?

626
00:30:05.799 --> 00:30:09.319
<v Speaker 2>Sensitive data exposure is a really common and potentially really

627
00:30:09.400 --> 00:30:13.920
<v Speaker 2>damaging security risk. It's when sensitive information, things like personally

628
00:30:14.000 --> 00:30:18.720
<v Speaker 2>identifiable information PII, credit card numbers, or passwords, gets leaked,

629
00:30:18.960 --> 00:30:20.640
<v Speaker 2>either accidentally or intentionally.

630
00:30:20.759 --> 00:30:22.759
<v Speaker 1>It's like leaving the vault door wide open.

631
00:30:22.880 --> 00:30:25.640
<v Speaker 2>Good analogy. Yeah, and it can happen in lots of ways,

632
00:30:25.759 --> 00:30:30.160
<v Speaker 2>like insecure coding, misconfigured servers, or even lost or stolen devices.

633
00:30:30.279 --> 00:30:32.160
<v Speaker 1>A breach like that could be disastrous.

634
00:30:33.240 --> 00:30:35.480
<v Speaker 2>Data breaches can cost a company a lot of money,

635
00:30:35.599 --> 00:30:38.599
<v Speaker 2>damage their reputation, and even lead to legal problems.

636
00:30:38.720 --> 00:30:41.240
<v Speaker 1>So data protection is not something we can mess around with.

637
00:30:41.559 --> 00:30:43.079
<v Speaker 1>What are the key things we need to keep in

638
00:30:43.079 --> 00:30:45.319
<v Speaker 1>mind to protect sensitive data properly?

639
00:30:45.480 --> 00:30:48.839
<v Speaker 2>First, never just assume the default settings are secure enough.

640
00:30:49.319 --> 00:30:52.839
<v Speaker 2>Cloud providers have lots of services with default configurations that

641
00:30:52.960 --> 00:30:55.599
<v Speaker 2>might not be the most secure. Always take the time

642
00:30:55.640 --> 00:30:58.440
<v Speaker 2>to review and change those defaults to fit your security needs.

643
00:30:58.680 --> 00:31:02.240
<v Speaker 1>Okay, so don't just trust the defaults, take control and

644
00:31:02.279 --> 00:31:04.200
<v Speaker 1>customize the settings exactly.

645
00:31:04.319 --> 00:31:07.920
<v Speaker 2>Encryption is also critical. You want to encrypt sensitive data,

646
00:31:08.000 --> 00:31:11.440
<v Speaker 2>whether it's being stored or transmitted. That means encrypting data

647
00:31:11.480 --> 00:31:16.119
<v Speaker 2>in databases, object storage, log files, everything, and it means

648
00:31:16.440 --> 00:31:18.799
<v Speaker 2>using HTTPS for all communication.

649
00:31:19.000 --> 00:31:21.119
<v Speaker 1>So we need to protect the data both when it's

650
00:31:21.160 --> 00:31:23.599
<v Speaker 1>sitting there and when it's moving between systems.

651
00:31:23.839 --> 00:31:28.319
<v Speaker 2>Right. Another important principle is data lifetime. Don't keep sensitive

652
00:31:28.400 --> 00:31:29.880
<v Speaker 2>data longer than you need it.

653
00:31:29.880 --> 00:31:32.680
<v Speaker 1>It seems weird to delete data, especially in today's world.

654
00:31:32.720 --> 00:31:33.599
<v Speaker 1>Why is that so important.

655
00:31:33.680 --> 00:31:35.519
<v Speaker 2>Longer you keep data, the more chance there is of

656
00:31:35.559 --> 00:31:38.720
<v Speaker 2>it being exposed if you don't need it anymore. Get

657
00:31:38.759 --> 00:31:42.880
<v Speaker 2>rid of it, deleted or archive it securely. Less data, less.

658
00:31:42.720 --> 00:31:45.480
<v Speaker 1>Risk, out of sight, out of mind, and out of reach.

659
00:31:45.319 --> 00:31:48.640
<v Speaker 2>Of attackers exactly. Other things to think about include logging,

660
00:31:48.759 --> 00:31:50.559
<v Speaker 2>software updates, and security scanning.

661
00:31:50.640 --> 00:31:53.359
<v Speaker 1>So it's about using a variety of strategies and best

662
00:31:53.359 --> 00:31:55.680
<v Speaker 1>practices to make sure we're covering all our bases.

663
00:31:56.039 --> 00:31:59.200
<v Speaker 2>You got it. The book goes into detail about how

664
00:31:59.240 --> 00:32:03.359
<v Speaker 2>to secure a specific cloud services like AWSS three, Dynamo,

665
00:32:03.480 --> 00:32:07.559
<v Speaker 2>dB as, your blob storage, Cosmos, DV, and others. It

666
00:32:07.599 --> 00:32:11.799
<v Speaker 2>emphasizes things like changing the default settings, enabling encryption, and

667
00:32:11.839 --> 00:32:13.119
<v Speaker 2>managing access controls.

668
00:32:13.119 --> 00:32:15.359
<v Speaker 1>So we can't just know these principles generally, we need

669
00:32:15.359 --> 00:32:17.839
<v Speaker 1>to apply them to each specific service absolutely.

670
00:32:18.160 --> 00:32:20.519
<v Speaker 2>And remember this isn't a one time thing. You need

671
00:32:20.519 --> 00:32:23.319
<v Speaker 2>to stay on top of it, change your strategies as needed,

672
00:32:23.559 --> 00:32:26.039
<v Speaker 2>and always be evaluating how secure your systems are.

673
00:32:26.640 --> 00:32:30.079
<v Speaker 1>Okay, data protection, check what's next on our Serverleist's security

674
00:32:30.079 --> 00:32:30.599
<v Speaker 1>to do list.

675
00:32:30.799 --> 00:32:33.839
<v Speaker 2>Now we move on to monitoring, auditing, and alerting. These

676
00:32:33.839 --> 00:32:36.599
<v Speaker 2>are like the eyes, ears, and voice of your security system.

677
00:32:36.680 --> 00:32:39.039
<v Speaker 1>So these components help us stay aware of what's happening

678
00:32:39.079 --> 00:32:41.839
<v Speaker 1>and respond to issues quickly. Why are they so crucial

679
00:32:41.839 --> 00:32:43.000
<v Speaker 1>in a serverlest environment?

680
00:32:43.279 --> 00:32:46.519
<v Speaker 2>Serverless apps are constantly changing and they're often spread across

681
00:32:46.559 --> 00:32:48.720
<v Speaker 2>lots of different services. You need a way to keep

682
00:32:48.759 --> 00:32:52.000
<v Speaker 2>track of everything that's happening, spot potential threats in real time,

683
00:32:52.240 --> 00:32:53.319
<v Speaker 2>and react fast as.

684
00:32:53.240 --> 00:32:56.960
<v Speaker 1>Something goes wrong, like a central command center for security exactly.

685
00:32:58.279 --> 00:33:01.799
<v Speaker 2>First, let's talk about monitoring. What are the key things

686
00:33:01.880 --> 00:33:03.559
<v Speaker 2>we need to watch in serverlests?

687
00:33:03.599 --> 00:33:06.839
<v Speaker 1>You mentioned resource utilization before. What else should we be

688
00:33:06.839 --> 00:33:07.680
<v Speaker 1>paying attention to?

689
00:33:08.000 --> 00:33:12.039
<v Speaker 2>That's right, Resource utilization is important. Track how much CPU,

690
00:33:12.319 --> 00:33:15.359
<v Speaker 2>memory and storage your functions are using. This can help

691
00:33:15.400 --> 00:33:18.119
<v Speaker 2>you find performance issues that could become security problems.

692
00:33:18.640 --> 00:33:21.000
<v Speaker 1>So we can see if our systems are being overloaded,

693
00:33:21.039 --> 00:33:22.440
<v Speaker 1>which might make them vulnerable.

694
00:33:22.680 --> 00:33:27.039
<v Speaker 2>Right. Another important metric is function performance. Look at things

695
00:33:27.079 --> 00:33:30.720
<v Speaker 2>like execution time and latency. Make sure your functions are

696
00:33:30.799 --> 00:33:32.000
<v Speaker 2>running quickly and efficiently.

697
00:33:32.200 --> 00:33:37.160
<v Speaker 1>Okay, make sure everything is running smoothly anything else err rates.

698
00:33:37.640 --> 00:33:39.839
<v Speaker 2>You need to know how often your functions are failing

699
00:33:39.880 --> 00:33:43.200
<v Speaker 2>and why. That way you can fix problems and stop

700
00:33:43.240 --> 00:33:44.279
<v Speaker 2>them from happening again.

701
00:33:44.400 --> 00:33:46.400
<v Speaker 1>So troubleshooting and preventing those.

702
00:33:46.359 --> 00:33:49.720
<v Speaker 2>Errors right, and don't forget to monitor costs. Serverleists can

703
00:33:49.720 --> 00:33:51.960
<v Speaker 2>save you money, but it's also easy to spend more

704
00:33:51.960 --> 00:33:53.960
<v Speaker 2>than you planned if you're not careful.

705
00:33:53.799 --> 00:33:55.599
<v Speaker 1>So keep an eye on the budget and make sure

706
00:33:55.640 --> 00:33:58.039
<v Speaker 1>our servilist appointments stay affordable.

707
00:33:58.319 --> 00:34:02.599
<v Speaker 2>Absolutely. Each cloud provider has tools from monitoring all of

708
00:34:02.599 --> 00:34:07.880
<v Speaker 2>this stuff. Aws has Cloud watch as Azure Monitor, and

709
00:34:08.000 --> 00:34:09.639
<v Speaker 2>Google Cloud has Cloud Monitoring.

710
00:34:10.079 --> 00:34:12.440
<v Speaker 1>Great, so we have the tools to collect all this data,

711
00:34:12.519 --> 00:34:14.119
<v Speaker 1>but how do we make sense of it all? It

712
00:34:14.159 --> 00:34:15.760
<v Speaker 1>seems like it could get pretty overwhelming.

713
00:34:16.280 --> 00:34:19.159
<v Speaker 2>That's where dashboards and visualizations come in. They help you

714
00:34:19.199 --> 00:34:22.800
<v Speaker 2>see trends, spot unusual activity, and get a good overall

715
00:34:22.880 --> 00:34:24.159
<v Speaker 2>view of your system's.

716
00:34:23.719 --> 00:34:26.360
<v Speaker 1>Health, so we can see the big picture without getting

717
00:34:26.400 --> 00:34:28.320
<v Speaker 1>lost in all the little details exactly.

718
00:34:28.719 --> 00:34:31.920
<v Speaker 2>But remember monitoring is only the first step. You also

719
00:34:32.039 --> 00:34:34.320
<v Speaker 2>need to be able to audit your system and find

720
00:34:34.320 --> 00:34:38.000
<v Speaker 2>potential security problems that you might not see just from monitoring.

721
00:34:38.159 --> 00:34:39.800
<v Speaker 1>Okay, so what's involved in auditing.

722
00:34:40.159 --> 00:34:43.280
<v Speaker 2>Auditing is about keeping track of everything that's happening, things

723
00:34:43.360 --> 00:34:47.239
<v Speaker 2>like configuration changes, user activity, and other events that could

724
00:34:47.239 --> 00:34:48.360
<v Speaker 2>be relevant to security.

725
00:34:48.519 --> 00:34:50.960
<v Speaker 1>So it's like having a detailed log of all the

726
00:34:51.039 --> 00:34:53.159
<v Speaker 1>activity in our serverleist environment.

727
00:34:53.280 --> 00:34:55.599
<v Speaker 2>You got it. You need to know who made what changes,

728
00:34:55.679 --> 00:34:57.760
<v Speaker 2>when they made them, and what those changes were.

729
00:34:57.760 --> 00:35:00.760
<v Speaker 1>So we can spot suspicious behavior and track down the

730
00:35:00.800 --> 00:35:02.519
<v Speaker 1>source of problems exactly.

731
00:35:02.800 --> 00:35:07.440
<v Speaker 2>Cloud providers have specific tools for auditing too. AWS has

732
00:35:07.440 --> 00:35:11.719
<v Speaker 2>Cloud Trail, Azure has activity log, and Google Cloud has

733
00:35:11.760 --> 00:35:12.880
<v Speaker 2>cloud audit logs.

734
00:35:13.280 --> 00:35:16.159
<v Speaker 1>Okay, so now we have the tools to monitor and

735
00:35:16.280 --> 00:35:20.039
<v Speaker 1>audit our environment. But how do we know when something

736
00:35:20.079 --> 00:35:21.880
<v Speaker 1>goes wrong? How do we get alerted?

737
00:35:22.119 --> 00:35:25.880
<v Speaker 2>That's where alerting comes in. It's all about getting notified

738
00:35:25.920 --> 00:35:28.719
<v Speaker 2>when something needs your attention. It could be a lot

739
00:35:28.719 --> 00:35:32.840
<v Speaker 2>of errors happening, strained user activity, or someone changing in

740
00:35:32.920 --> 00:35:34.199
<v Speaker 2>important security setting.

741
00:35:34.480 --> 00:35:37.119
<v Speaker 1>So our early warning system letting us know when we

742
00:35:37.159 --> 00:35:38.639
<v Speaker 1>need to investigate and take action.

743
00:35:38.920 --> 00:35:41.039
<v Speaker 2>Right, you can set up alerts based on the things

744
00:35:41.039 --> 00:35:42.719
<v Speaker 2>you're monitoring and the events you're auditing.

745
00:35:42.760 --> 00:35:44.280
<v Speaker 1>Can you give me some examples of the kinds of

746
00:35:44.280 --> 00:35:45.480
<v Speaker 1>alerts we might want to set up?

747
00:35:45.559 --> 00:35:47.719
<v Speaker 2>Sure, you might want to get an alert if your

748
00:35:47.719 --> 00:35:50.039
<v Speaker 2>function has a high error rate, someone try to access

749
00:35:50.079 --> 00:35:53.559
<v Speaker 2>something they shouldn't, or if someone changes a key security.

750
00:35:53.079 --> 00:35:55.440
<v Speaker 1>Setting, so anything that could be a security risk or

751
00:35:55.480 --> 00:35:56.559
<v Speaker 1>a performance problem.

752
00:35:56.679 --> 00:35:58.840
<v Speaker 2>Right, And you can choose different ways to get those

753
00:35:58.880 --> 00:36:01.719
<v Speaker 2>alerts depending on how and it is. Email might be

754
00:36:01.760 --> 00:36:04.400
<v Speaker 2>fine for minor things, but you might want text messages

755
00:36:04.480 --> 00:36:06.400
<v Speaker 2>or even phone calls for serious problems.

756
00:36:06.480 --> 00:36:09.440
<v Speaker 1>So we can escalate alerts based on how serious they are.

757
00:36:09.639 --> 00:36:13.559
<v Speaker 2>Exactly. The goal of alerting isn't to overwhelm you with notifications,

758
00:36:13.960 --> 00:36:16.360
<v Speaker 2>but to give you useful information that helps you keep

759
00:36:16.360 --> 00:36:18.920
<v Speaker 2>your serverless environment secure and reliable.

760
00:36:19.239 --> 00:36:23.039
<v Speaker 1>Okay, so we've covered securing the code, restricting permissions, managing accounts,

761
00:36:23.079 --> 00:36:28.559
<v Speaker 1>protecting secrets, authentication and authorization, data protection, and setting up monitoring,

762
00:36:28.840 --> 00:36:32.360
<v Speaker 1>auditing and alerting. Is there anything else we should consider?

763
00:36:33.119 --> 00:36:36.079
<v Speaker 1>Anything we can do to make our serverless environments even

764
00:36:36.159 --> 00:36:36.880
<v Speaker 1>more secure?

765
00:36:37.320 --> 00:36:38.840
<v Speaker 2>There are a few more things that can make a

766
00:36:38.880 --> 00:36:41.559
<v Speaker 2>big difference in how secure your serverless setup is.

767
00:36:41.719 --> 00:36:44.039
<v Speaker 1>Okay, I'm all yours. What else can we do to

768
00:36:44.079 --> 00:36:45.039
<v Speaker 1>improve our security?

769
00:36:45.360 --> 00:36:50.119
<v Speaker 2>Let's start with continuous integration and continuous delivery or CICD.

770
00:36:50.440 --> 00:36:52.639
<v Speaker 1>I know about CICD, but isn't that more of a

771
00:36:52.679 --> 00:36:55.079
<v Speaker 1>developer thing. How does it relate to security?

772
00:36:55.559 --> 00:36:58.320
<v Speaker 2>You're right. CD is mostly used by developers, but it

773
00:36:58.360 --> 00:37:01.159
<v Speaker 2>can have a huge impact on secureecurity. It automates the

774
00:37:01.199 --> 00:37:04.840
<v Speaker 2>process of building, testing, and deploying code. If you add

775
00:37:04.840 --> 00:37:08.719
<v Speaker 2>security checks into your CICD pipeline, you can find vulnerabilities

776
00:37:08.760 --> 00:37:10.519
<v Speaker 2>early on before they ever go live.

777
00:37:10.880 --> 00:37:14.639
<v Speaker 1>So baking security right into the development process exactly.

778
00:37:14.920 --> 00:37:17.800
<v Speaker 2>You can automate things like static code analysis, checking for

779
00:37:17.880 --> 00:37:20.800
<v Speaker 2>vulnerable dependencies, and even security testing.

780
00:37:21.000 --> 00:37:23.199
<v Speaker 1>So all those security checks we talked about, we can

781
00:37:23.199 --> 00:37:25.599
<v Speaker 1>make them part of the development workflow automatically.

782
00:37:25.760 --> 00:37:28.519
<v Speaker 2>Right. That way, you're not relying on developers to remember

783
00:37:28.559 --> 00:37:31.360
<v Speaker 2>to do those checks. It's much more reliable and consistent.

784
00:37:31.480 --> 00:37:35.599
<v Speaker 1>That makes sense. What about source control? It's how we

785
00:37:35.639 --> 00:37:37.920
<v Speaker 1>manage our code, but how does it fit into the

786
00:37:37.960 --> 00:37:38.920
<v Speaker 1>security picture?

787
00:37:39.360 --> 00:37:42.239
<v Speaker 2>Source control is important for collaboration, but it can also

788
00:37:42.280 --> 00:37:44.280
<v Speaker 2>be a security risk if it's not secure.

789
00:37:44.400 --> 00:37:46.360
<v Speaker 1>I hadn't thought about that. What do we need to

790
00:37:46.400 --> 00:37:48.800
<v Speaker 1>do to secure our source control systems?

791
00:37:49.159 --> 00:37:53.280
<v Speaker 2>First? Limit access to your code repositories to authorized users

792
00:37:53.320 --> 00:37:57.880
<v Speaker 2>only strong passwords, MFA, least privilege, all the things we've

793
00:37:57.880 --> 00:37:58.400
<v Speaker 2>talked about.

794
00:37:58.599 --> 00:38:00.800
<v Speaker 1>Lock it down, make sure only the right people can.

795
00:38:00.719 --> 00:38:03.360
<v Speaker 2>See the code right and be careful what you commit

796
00:38:03.400 --> 00:38:06.880
<v Speaker 2>to source control. Don't put sensitive information in there like

797
00:38:06.960 --> 00:38:11.360
<v Speaker 2>apikeys or credentials. Use those secret management services instead, So.

798
00:38:11.400 --> 00:38:13.960
<v Speaker 1>Keep secrets out of the code base exactly.

799
00:38:14.760 --> 00:38:17.119
<v Speaker 2>It's also a good idea to double check your commit

800
00:38:17.320 --> 00:38:20.360
<v Speaker 2>history for anything that shouldn't be there. There are tools

801
00:38:20.400 --> 00:38:23.199
<v Speaker 2>like get secrets that can help you scan for sensitive information.

802
00:38:23.440 --> 00:38:26.880
<v Speaker 1>Think before you commit and make sure no secrets have slipped.

803
00:38:26.599 --> 00:38:29.519
<v Speaker 2>In you got it. Another thing to watch out for

804
00:38:29.639 --> 00:38:33.639
<v Speaker 2>is serveralist framework plugins. Plugins can add a lot of functionality,

805
00:38:33.960 --> 00:38:37.039
<v Speaker 2>but they can also create security risks if you're not careful.

806
00:38:37.320 --> 00:38:39.880
<v Speaker 1>It seems like anything new we add to our environment

807
00:38:39.920 --> 00:38:44.559
<v Speaker 1>could bring new security risks. Dependencies, plugins, features, everything.

808
00:38:44.760 --> 00:38:46.559
<v Speaker 2>That's a good point. You need to be aware of

809
00:38:46.599 --> 00:38:48.559
<v Speaker 2>the risks and take steps to mitigate them.

810
00:38:48.679 --> 00:38:51.559
<v Speaker 1>So how do we approach plugins from a security.

811
00:38:51.079 --> 00:38:55.039
<v Speaker 2>Perspective, if you can look at the plugins code before

812
00:38:55.079 --> 00:38:57.079
<v Speaker 2>you use it. A lot of them are open source,

813
00:38:57.159 --> 00:38:59.400
<v Speaker 2>so you can see exactly what they're doing. Look for

814
00:38:59.440 --> 00:39:03.039
<v Speaker 2>potential price problems, like the use of unsafe functions or

815
00:39:03.079 --> 00:39:04.760
<v Speaker 2>the possibility of code injection.

816
00:39:05.280 --> 00:39:07.599
<v Speaker 1>So we're doing a mini security audit of the plug

817
00:39:07.599 --> 00:39:08.119
<v Speaker 1>in itself.

818
00:39:08.239 --> 00:39:10.519
<v Speaker 2>Right. If you're not comfortable looking at code, make sure

819
00:39:10.559 --> 00:39:13.280
<v Speaker 2>you choose plugins from trusted sources and that they have

820
00:39:13.320 --> 00:39:16.199
<v Speaker 2>a good reputation. See what other developers are saying and

821
00:39:16.199 --> 00:39:18.239
<v Speaker 2>if anyone has reported security.

822
00:39:17.840 --> 00:39:21.159
<v Speaker 1>Issues, so do our research. Choose carefully, and don't just

823
00:39:21.239 --> 00:39:22.880
<v Speaker 1>install plugins without thinking.

824
00:39:23.559 --> 00:39:26.639
<v Speaker 2>Right, And like everything else we've talked about, be mindful

825
00:39:26.639 --> 00:39:30.280
<v Speaker 2>of the permissions you give those plugins. Lea's privilege applied

826
00:39:30.320 --> 00:39:33.840
<v Speaker 2>here too. Only give them access to what they absolutely need.

827
00:39:34.199 --> 00:39:37.639
<v Speaker 1>Treat plugins with the same caution as any other part

828
00:39:37.639 --> 00:39:39.719
<v Speaker 1>of our serverlest environment exactly.

829
00:39:40.519 --> 00:39:43.320
<v Speaker 2>Now, let's switch gears and talk about function optimization.

830
00:39:43.639 --> 00:39:47.239
<v Speaker 1>Function optimization, I thought we were focused on security. Isn't

831
00:39:47.239 --> 00:39:48.320
<v Speaker 1>that more about performance?

832
00:39:48.599 --> 00:39:52.599
<v Speaker 2>Not always? Optimizing your functions can make them more secure?

833
00:39:53.039 --> 00:39:55.400
<v Speaker 1>Really, I'm not sure I get it. How does making

834
00:39:55.400 --> 00:39:57.800
<v Speaker 1>our functions run faster make them more secure?

835
00:39:58.000 --> 00:39:59.400
<v Speaker 2>It reduces their attack surface.

836
00:39:59.440 --> 00:40:00.800
<v Speaker 1>Okay, what's an attack surface?

837
00:40:01.119 --> 00:40:03.719
<v Speaker 2>It's basically all the ways an attacker could interact with

838
00:40:03.760 --> 00:40:07.880
<v Speaker 2>your application and exploit vulnerabilities. When you optimize your functions,

839
00:40:08.119 --> 00:40:11.480
<v Speaker 2>you're cleaning up your code, getting rid of unnecessary dependencies,

840
00:40:11.800 --> 00:40:14.840
<v Speaker 2>and making them run faster. This makes it harder for

841
00:40:14.880 --> 00:40:17.039
<v Speaker 2>attackers to find and exploit weaknesses.

842
00:40:17.199 --> 00:40:20.280
<v Speaker 1>So a more efficient function is a more secure function exactly.

843
00:40:20.679 --> 00:40:22.920
<v Speaker 2>And there are a bunch of ways to optimize your functions,

844
00:40:23.079 --> 00:40:25.519
<v Speaker 2>like One way is to keep each function focused on

845
00:40:25.519 --> 00:40:30.400
<v Speaker 2>one specific task. Small focus functions are easier to understand, test,

846
00:40:30.599 --> 00:40:31.199
<v Speaker 2>and secure.

847
00:40:31.519 --> 00:40:35.079
<v Speaker 1>Break down big tasks into smaller, more manageable pieces.

848
00:40:35.400 --> 00:40:37.880
<v Speaker 2>Right. Also, make sure you're using the right amount of

849
00:40:37.920 --> 00:40:41.880
<v Speaker 2>resources for each function. Using too many resources can cost

850
00:40:41.960 --> 00:40:43.719
<v Speaker 2>you more money and make you a bigger target.

851
00:40:43.880 --> 00:40:47.760
<v Speaker 1>So right sizing those resources for efficiency and security.

852
00:40:47.400 --> 00:40:50.159
<v Speaker 2>You got it. You can also use packaging tools to

853
00:40:50.199 --> 00:40:54.960
<v Speaker 2>make your function deployment packages smaller. Smaller packages deploy faster

854
00:40:55.559 --> 00:40:57.519
<v Speaker 2>and give attackers less code to look at.

855
00:40:57.719 --> 00:41:01.000
<v Speaker 1>So function optimization makes our code faster, sure, more efficient,

856
00:41:01.079 --> 00:41:02.559
<v Speaker 1>and more secure precisely.

857
00:41:03.199 --> 00:41:05.800
<v Speaker 2>Now, let's talk about a really useful tool for proactive

858
00:41:05.800 --> 00:41:08.800
<v Speaker 2>security thinking. Fault trees fault trees.

859
00:41:08.840 --> 00:41:10.119
<v Speaker 1>That sounds a little intimidating.

860
00:41:10.199 --> 00:41:12.840
<v Speaker 2>They're not as complicated as they sound. A fault tree

861
00:41:12.880 --> 00:41:14.920
<v Speaker 2>is a diagram that shows you all the ways something

862
00:41:14.960 --> 00:41:17.599
<v Speaker 2>could go wrong and what might cause those problems.

863
00:41:17.679 --> 00:41:19.840
<v Speaker 1>So we're making a map of everything that could potentially

864
00:41:19.880 --> 00:41:20.719
<v Speaker 1>break exactly.

865
00:41:21.280 --> 00:41:23.880
<v Speaker 2>And by creating a fault tree, you can spot security

866
00:41:23.920 --> 00:41:26.920
<v Speaker 2>vulnerabilities before they happen and figure out how to stop them.

867
00:41:27.000 --> 00:41:28.719
<v Speaker 1>Can you give me an example of how we might

868
00:41:28.840 --> 00:41:30.719
<v Speaker 1>use this for serverless sure?

869
00:41:30.960 --> 00:41:34.079
<v Speaker 2>Imagine you have a function that uses a third party API.

870
00:41:34.960 --> 00:41:39.360
<v Speaker 2>What if that API stops working or start sending bad data.

871
00:41:39.480 --> 00:41:41.760
<v Speaker 2>If you think through those scenarios and draw them out

872
00:41:41.760 --> 00:41:43.599
<v Speaker 2>in a faull tree, you can come up with backup

873
00:41:43.639 --> 00:41:47.159
<v Speaker 2>plans like fallback mechanisms or data validation checks.

874
00:41:47.239 --> 00:41:49.360
<v Speaker 1>So we're planning for the worst and having a plan

875
00:41:49.440 --> 00:41:50.360
<v Speaker 1>be exactly.

876
00:41:50.880 --> 00:41:53.880
<v Speaker 2>Fall trees can help you analyze all kinds of security threats,

877
00:41:53.960 --> 00:41:56.400
<v Speaker 2>not just problems with APIs. You can use them to

878
00:41:56.440 --> 00:42:00.840
<v Speaker 2>look at insider threats, natural disasters, even simple coding mistakes.

879
00:42:01.239 --> 00:42:04.159
<v Speaker 1>Okay, so fault trees help us think like attackers, find

880
00:42:04.199 --> 00:42:06.800
<v Speaker 1>potential problems, and build more resilient systems.

881
00:42:06.880 --> 00:42:09.639
<v Speaker 2>You got it. That kind of proactive thinking is really

882
00:42:09.639 --> 00:42:10.679
<v Speaker 2>important for security.

883
00:42:11.079 --> 00:42:13.840
<v Speaker 1>This has been really eye opening. We've gone through a lot,

884
00:42:13.880 --> 00:42:16.679
<v Speaker 1>from the code itself to managing accounts and protecting those

885
00:42:16.679 --> 00:42:19.280
<v Speaker 1>super important secrets. We even talked about different ways to

886
00:42:19.320 --> 00:42:23.119
<v Speaker 1>handle authentication and authorization, how to keep data safe, and

887
00:42:23.159 --> 00:42:26.280
<v Speaker 1>the importance of monitoring, auditing and alerting. And then we

888
00:42:26.280 --> 00:42:30.480
<v Speaker 1>added on things like CICD source control plugins, optimizing those

889
00:42:30.480 --> 00:42:32.000
<v Speaker 1>functions and even those fault trees.

890
00:42:32.519 --> 00:42:34.920
<v Speaker 2>It's been a lot, that's for sure, But the main

891
00:42:34.960 --> 00:42:38.800
<v Speaker 2>point is serveralist security is never truly finished. You're always

892
00:42:38.800 --> 00:42:41.840
<v Speaker 2>working on it. But if you understand the basics of

893
00:42:41.880 --> 00:42:44.760
<v Speaker 2>follow the best practices we've talked about, you can build

894
00:42:44.800 --> 00:42:47.679
<v Speaker 2>secure and reliable applications that can stand up to those

895
00:42:47.760 --> 00:42:49.000
<v Speaker 2>ever evolving threats.

896
00:42:49.239 --> 00:42:51.920
<v Speaker 1>Okay, before we wrap up completely, let's just quickly go

897
00:42:51.960 --> 00:42:54.480
<v Speaker 1>over the main points again. We started by talking about

898
00:42:54.519 --> 00:42:58.320
<v Speaker 1>really understanding the application when we're trying to secure it's architecture,

899
00:42:58.440 --> 00:43:01.079
<v Speaker 1>it's code, and the threat it might face. Right.

900
00:43:01.400 --> 00:43:03.440
<v Speaker 2>We also learned how to figure out and assess those

901
00:43:03.559 --> 00:43:06.880
<v Speaker 2>risks using a risk assessment table and a risk matrix,

902
00:43:07.199 --> 00:43:10.000
<v Speaker 2>thinking about how likely each threat is and how bad

903
00:43:10.039 --> 00:43:11.039
<v Speaker 2>it would be if it happened.

904
00:43:11.320 --> 00:43:13.639
<v Speaker 1>Then we dug into the details of securing the code,

905
00:43:14.079 --> 00:43:16.840
<v Speaker 1>starting with picking a safe runtime engine and making sure

906
00:43:16.840 --> 00:43:18.480
<v Speaker 1>we're using the right version.

907
00:43:18.679 --> 00:43:22.440
<v Speaker 2>And we talked about carefully checking those dependencies, using static

908
00:43:22.480 --> 00:43:26.280
<v Speaker 2>code analysis to find common vulnerabilities, and doing thorough testing

909
00:43:26.280 --> 00:43:27.719
<v Speaker 2>to make sure our code is strong.

910
00:43:27.920 --> 00:43:30.199
<v Speaker 1>Input validation was a big one, making sure we don't

911
00:43:30.199 --> 00:43:32.400
<v Speaker 1>just assume the data we get as safe and taking

912
00:43:32.400 --> 00:43:34.679
<v Speaker 1>steps to block bad data absolutely.

913
00:43:35.480 --> 00:43:39.239
<v Speaker 2>We talked about restricting permissions using least privilege, making sure

914
00:43:39.320 --> 00:43:42.480
<v Speaker 2>users and services only have access to what they absolutely need.

915
00:43:43.159 --> 00:43:46.119
<v Speaker 2>We also talked about securing those master accounts, the ones

916
00:43:46.159 --> 00:43:47.079
<v Speaker 2>that control everything.

917
00:43:47.199 --> 00:43:50.960
<v Speaker 1>Protecting secrets was crucial, making sure things like API keys

918
00:43:51.000 --> 00:43:54.000
<v Speaker 1>and database credentials are never hard coded and are always

919
00:43:54.000 --> 00:43:54.840
<v Speaker 1>stored securely.

920
00:43:55.159 --> 00:43:58.559
<v Speaker 2>We also went through authentication and authorization, looking at the

921
00:43:58.559 --> 00:44:01.800
<v Speaker 2>different ways we can control who gets into our applications

922
00:44:02.159 --> 00:44:03.840
<v Speaker 2>and what they can do once they're in there.

923
00:44:04.039 --> 00:44:07.400
<v Speaker 1>Data protection was key too, remembering to encrypt sensitive data

924
00:44:07.440 --> 00:44:10.760
<v Speaker 1>whether it's stored or being transmitted, managing how long we

925
00:44:10.880 --> 00:44:13.920
<v Speaker 1>keep data, and never just trusting the default settings.

926
00:44:14.000 --> 00:44:17.719
<v Speaker 2>And finally we talked about monitoring, auditing, and alerting, setting

927
00:44:17.760 --> 00:44:21.000
<v Speaker 2>up those systems to watch our serverleist environment, detect threats

928
00:44:21.239 --> 00:44:22.760
<v Speaker 2>and let us know if something goes wrong.

929
00:44:22.840 --> 00:44:24.360
<v Speaker 1>Wow, that is a lot of stuff. I feel like

930
00:44:24.400 --> 00:44:27.159
<v Speaker 1>I know so much more about servileist security now me too.

931
00:44:27.440 --> 00:44:30.039
<v Speaker 2>And don't forget security isn't a one person job. It

932
00:44:30.079 --> 00:44:33.800
<v Speaker 2>takes a whole team developers, security experts, operations people.

933
00:44:34.159 --> 00:44:38.800
<v Speaker 1>Everyone working together keymwork makes the dream work. As they say. Okay,

934
00:44:39.000 --> 00:44:41.039
<v Speaker 1>before we finish up this episode, I wanted to touch

935
00:44:41.079 --> 00:44:44.119
<v Speaker 1>on the last part of the book, finalizing the risk assessment.

936
00:44:44.559 --> 00:44:46.480
<v Speaker 1>It seems like a good way to tie everything together.

937
00:44:46.679 --> 00:44:49.519
<v Speaker 2>It is. Yeah, it reminds us that risk assessment is

938
00:44:49.559 --> 00:44:52.119
<v Speaker 2>not something you do just once. It's a process you

939
00:44:52.159 --> 00:44:56.199
<v Speaker 2>need to keep revisiting as your application changes, new threats appear,

940
00:44:56.719 --> 00:44:58.320
<v Speaker 2>and your business needs evolve.

941
00:44:58.760 --> 00:45:03.039
<v Speaker 1>So staying fleck and adapting to the changing security landscape.

942
00:45:03.559 --> 00:45:07.320
<v Speaker 1>What are the main steps involved in finalizing a risk assessment?

943
00:45:08.039 --> 00:45:10.800
<v Speaker 2>First, you need to gather all the information you've collected

944
00:45:10.840 --> 00:45:13.920
<v Speaker 2>from all the different things we've talked about, reviewing documentation,

945
00:45:14.239 --> 00:45:17.920
<v Speaker 2>analyzing code, security scans, talking to people who know the

946
00:45:17.960 --> 00:45:19.360
<v Speaker 2>application and its risks.

947
00:45:19.480 --> 00:45:22.239
<v Speaker 1>So bringing together all the intelligence we've gathered exactly.

948
00:45:22.519 --> 00:45:25.119
<v Speaker 2>Then you need to score each finding based on how

949
00:45:25.159 --> 00:45:27.440
<v Speaker 2>serious it is and what could happen to your business

950
00:45:27.440 --> 00:45:28.440
<v Speaker 2>if it became a real.

951
00:45:28.280 --> 00:45:31.000
<v Speaker 1>Problem, prioritizing based on how bad things could get.

952
00:45:31.199 --> 00:45:34.199
<v Speaker 2>Right, But it's not just about how technically serious a

953
00:45:34.320 --> 00:45:36.639
<v Speaker 2>risk is. You also need to figure out the potential

954
00:45:36.639 --> 00:45:39.800
<v Speaker 2>impact on the business. What would happen if this risk

955
00:45:39.960 --> 00:45:41.280
<v Speaker 2>actually became a problem.

956
00:45:41.440 --> 00:45:45.000
<v Speaker 1>That makes sense, We need to translate those technical details

957
00:45:45.000 --> 00:45:48.559
<v Speaker 1>into real world consequences that business people can understand.

958
00:45:48.679 --> 00:45:51.960
<v Speaker 2>You got it. For example, you might say that a

959
00:45:52.000 --> 00:45:55.119
<v Speaker 2>specific vulnerability could lead to a data breach that would

960
00:45:55.119 --> 00:45:58.440
<v Speaker 2>cost the company millions of dollars in fines or lost business,

961
00:45:59.239 --> 00:46:02.320
<v Speaker 2>or it could really hurt the company's reputation and make

962
00:46:02.360 --> 00:46:03.519
<v Speaker 2>customers lose trust.

963
00:46:04.079 --> 00:46:07.320
<v Speaker 1>Okay, now we're talking their language. So we've collected our findings,

964
00:46:07.440 --> 00:46:10.960
<v Speaker 1>scored them, and assess their impact on the business. What's next?

965
00:46:11.159 --> 00:46:13.840
<v Speaker 2>Now it's time to make some decisions. You work with

966
00:46:13.880 --> 00:46:17.280
<v Speaker 2>everyone involved to decide which risks to address, which ones

967
00:46:17.320 --> 00:46:19.760
<v Speaker 2>you can live with, and how to use your resources

968
00:46:19.800 --> 00:46:21.320
<v Speaker 2>to deal with those risks effectively.

969
00:46:21.400 --> 00:46:25.920
<v Speaker 1>So it's about balancing different factors like severity, impact, what's practical,

970
00:46:26.159 --> 00:46:26.880
<v Speaker 1>and of course.

971
00:46:26.719 --> 00:46:29.280
<v Speaker 2>The budget right and you need to think about how

972
00:46:29.360 --> 00:46:32.000
<v Speaker 2>much it costs to fix a problem versus how much

973
00:46:32.039 --> 00:46:35.119
<v Speaker 2>it would cost if the problem actually happened. Sometimes it

974
00:46:35.159 --> 00:46:37.159
<v Speaker 2>might be better to accept a certain amount of risk

975
00:46:37.440 --> 00:46:39.719
<v Speaker 2>than to spent a ton of money trying to completely

976
00:46:39.760 --> 00:46:40.400
<v Speaker 2>eliminate it.

977
00:46:40.719 --> 00:46:43.519
<v Speaker 1>So weigh the options and make smart decisions based on

978
00:46:43.599 --> 00:46:46.000
<v Speaker 1>the organization's overall tolerance for risk.

979
00:46:46.400 --> 00:46:48.679
<v Speaker 2>Exactly. The goal is to come up with a plan

980
00:46:48.880 --> 00:46:51.519
<v Speaker 2>that finds the right balance between security and what the

981
00:46:51.519 --> 00:46:52.199
<v Speaker 2>business needs.

982
00:46:52.360 --> 00:46:55.440
<v Speaker 1>That's a great point. Security isn't about getting rid of

983
00:46:55.480 --> 00:46:58.159
<v Speaker 1>all risk, It's about managing it in a smart way.

984
00:46:58.360 --> 00:47:01.599
<v Speaker 2>Couldn't have set it better myself. And remember, risk assessment

985
00:47:02.039 --> 00:47:05.639
<v Speaker 2>never really ends. You need to revisit it as things change.

986
00:47:05.760 --> 00:47:10.480
<v Speaker 1>Okay, stay aware, adapt keep learning. Well said, Well, we've

987
00:47:10.519 --> 00:47:13.199
<v Speaker 1>reached the end of our deep dive into serverleist security.

988
00:47:13.679 --> 00:47:15.760
<v Speaker 1>It's been a long journey, but I feel like I've

989
00:47:15.800 --> 00:47:18.519
<v Speaker 1>learned a lot of valuable information that I can use

990
00:47:18.559 --> 00:47:19.280
<v Speaker 1>in my own work.

991
00:47:19.400 --> 00:47:22.480
<v Speaker 2>Me too. I hope everyone listening feels ready to tackle

992
00:47:22.519 --> 00:47:26.119
<v Speaker 2>the challenges of securing serverlest applications and building more resilient

993
00:47:26.119 --> 00:47:27.079
<v Speaker 2>and secure systems.

994
00:47:27.280 --> 00:47:30.280
<v Speaker 1>Absolutely, and as we finish up, I want to encourage

995
00:47:30.280 --> 00:47:33.599
<v Speaker 1>everyone to always think about security first, be curious, and

996
00:47:33.679 --> 00:47:36.840
<v Speaker 1>never stop learning. Serverlest is always evolving, and so are

997
00:47:36.880 --> 00:47:40.239
<v Speaker 1>the threats. If we stay informed and proactive, we can

998
00:47:40.280 --> 00:47:42.800
<v Speaker 1>build a more secure digital future for everyone.

999
00:47:43.159 --> 00:47:46.480
<v Speaker 2>I agree, and remember you don't have to do this alone.

1000
00:47:46.800 --> 00:47:49.760
<v Speaker 2>There's a whole community of security experts and developers out there.

1001
00:47:49.840 --> 00:47:53.559
<v Speaker 2>We're passionate about servilist security. Don't be afraid to ask

1002
00:47:53.639 --> 00:47:55.360
<v Speaker 2>questions and share what you know.

1003
00:47:55.599 --> 00:47:58.679
<v Speaker 1>Absolutely, sharing knowledge and working together is how we stay

1004
00:47:58.719 --> 00:48:01.079
<v Speaker 1>ahead of the game. You're joining us for this deep

1005
00:48:01.119 --> 00:48:04.480
<v Speaker 1>dive into serverlest security. Until next time, stay secure.
