@Pitawat Your first option is possible as the VIP is static for basic tier as mentioned in this document with the certain excecption as mentioned in the document. But in case if you are in Consumption Tier then it is not static.
Your third and fourth option are not supported in both Basic/Consumption Tier as mentioned in the APIM features document.
Your second option can be other possible solution apart from first option when you are using Bais Tier. As you have mentioned this will need the code changes at the app service end where the APIM will use pass the certificate and the app servicer needs to validate this certificate. If you are not validating the certificate at app service end then anyone can pass any certificate to bypass it.
Alternative if you don't want to use the certificate you can use the shared secret between the APIM and the app service. Your APIM will set a certain header with a certain value using policy and you need to check these header at the app service end and validate with the secret that was used between the two.
For basic tier if you don't want to directly access the App Service URL (*.azurewebsites.net) then you can go with first or second option.