Jason Wadsworth gives a good answer above re applyRemovalPolicy().
You can apply policies at the resource level and at the stack level.
You can also take care to set appropriate IAM policies for your users (including perhaps the API user that you use for the cdk) such that they couldn't delete your protected resources even if they wanted to.
You might want to look into the --enable-termination-protection flag supported by aws-cli.
Finally, a cheap and easy way to ensure that a given resource won't get inadvertently deleted that requires minimal aws knowledge + cdk experience is to simply define the resource outside the cdk, e.g. via the console, aws-cli, etc.
Starting out, this might help offer some peace of mind that you or a colleague won't accidentally return something like an EIP to Amazon's pool if, for example, there were a bunch of external dependencies and considerations like whitelists and third-party firewall rules tied to it.
Welcome to StackOverflow, don't forget to "accept" the answer that you feel provides the best solution to your problem :).